Faits: Faits: A. Fatima A._, originaire du Maroc, est entrée en contact avec B._ par la voie d'annonces dans la presse. Après échange de correspondance, elle s'est rendue en Suisse afin de l'épouser; le mariage fut célébré en décembre 1999. En janvier et février suivants, sous le prétexte fallacieux de couvrir les frais d'une opération du coeur à subir par sa mère, restée au Maroc, Fatima B._ a obtenu de son mari les montants de 10'000 et 20'000 fr., soit 30'000 fr. en tout. A la même époque, elle a fait la connaissance de Lucie Z._, une employée de banque que son mari connaissait également. A. Fatima A._, originaire du Maroc, est entrée en contact avec B._ par la voie d'annonces dans la presse. Après échange de correspondance, elle s'est rendue en Suisse afin de l'épouser; le mariage fut célébré en décembre 1999. En janvier et février suivants, sous le prétexte fallacieux de couvrir les frais d'une opération du coeur à subir par sa mère, restée au Maroc, Fatima B._ a obtenu de son mari les montants de 10'000 et 20'000 fr., soit 30'000 fr. en tout. A la même époque, elle a fait la connaissance de Lucie Z._, une employée de banque que son mari connaissait également. B. Par jugement du 15 mai 2003, le Juge de police de l'arrondissement de la Veveyse a reconnu Fatima B._ coupable de faux dans les titres et l'a condamnée à un mois d'emprisonnement, avec sursis durant deux ans. Ce magistrat a constaté que la condamnée avait créé deux fausses attestations portant la signature contrefaite de Lucie Z._. Celle-ci reconnaissait, selon ces documents, avoir reçu de Fatima B._ les sommes de 5'000 et 7'000 fr. et elle s'obligeait à les lui rembourser. Ces faux portaient les dates du 2 juin et du 28 septembre 2000. La condamnée n'en avait fait aucun usage. Selon le jugement, elle les avait créés dans l'intention de faire croire à son mari, au besoin, que les montants reçus de lui avaient été prêtés à Lucie Z._; par là, elle pensait pouvoir se protéger d'une éventuelle demande de restitution. Fatima B._ contestait toute culpabilité et persistait à présenter les attestations comme réellement établies par Lucie Z._. Elle a déféré le jugement à la Cour d'appel pénal du Tribunal cantonal. Par ailleurs, elle a divorcé de B._ et s'est remariée; elle a pris le nom de Fatima C._. Statuant le 4 mai 2004, la Cour d'appel pénal a rejeté son recours. Statuant le 4 mai 2004, la Cour d'appel pénal a rejeté son recours. C. Agissant par la voie du recours de droit public, Fatima C._ requiert le Tribunal fédéral d'annuler l'arrêt de cette juridiction. Elle ne met plus en doute la création, par elle, de deux titres faux. Invoquant l'art. 9 Cst., elle reproche aux précédents juges d'avoir constaté arbitrairement que les fonds obtenus de B._ lui étaient prêtés plutôt que donnés; à son avis, dans cette deuxième hypothèse, elle n'avait aucune dette envers son époux et le dessein de se procurer un avantage illicite, qui est une condition de la punissabilité selon l'art. 251 CP, n'était pas établi. Une demande d'assistance judiciaire est jointe au recours. Invités à répondre, le Ministère public du canton de Fribourg et la Cour d'appel pénal ont renoncé à présenter des observations.