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.
Le Tribunal fédéral considère en droit:
Le Tribunal fédéral considère en droit:
1. En vertu de l'art. 84 al. 2 OJ, le recours de droit public n'est recevable que dans la mesure où les griefs soulevés ne peuvent pas être présentés au Tribunal fédéral par un autre moyen de droit, tel que le pourvoi en nullité à la Cour de cassation du Tribunal fédéral. Celui-ci est ouvert contre les jugements relatifs à des infractions de droit pénal fédéral, rendus en dernière instance cantonale (art. 247 al. 1, 268 ch. 1 PPF); il peut être formé pour violation du droit fédéral, sauf les droits constitutionnels (art. 269 PPF; ATF 124 IV 137 consid. 2e p. 141).
L'appréciation des preuves est arbitraire, donc contraire à l'art. 9 Cst., lorsqu'elle contredit d'une manière choquante le sentiment de la justice et de l'équité. Le Tribunal fédéral n'invalide l'appréciation du juge de la cause pénale que si elle apparaît insoutenable, en contradiction manifeste avec la situation effective ou adoptée sans motifs objectifs. Il ne suffit pas que les motifs du verdict de culpabilité soient insoutenables; il faut en outre que l'appréciation soit arbitraire dans son résultat. Il ne suffit pas non plus qu'une solution différente puisse être tenue pour également concevable, ou apparaisse même préférable (ATF 129 I 49 consid. 4 p. 58; 127 I 38 consid. 2 p. 40, 126 I 168 consid. 3a p. 170; voir aussi ATF 129 I 8 consid. 2.1 in fine p. 9).
L'appréciation des preuves est arbitraire, donc contraire à l'art. 9 Cst., lorsqu'elle contredit d'une manière choquante le sentiment de la justice et de l'équité. Le Tribunal fédéral n'invalide l'appréciation du juge de la cause pénale que si elle apparaît insoutenable, en contradiction manifeste avec la situation effective ou adoptée sans motifs objectifs. Il ne suffit pas que les motifs du verdict de culpabilité soient insoutenables; il faut en outre que l'appréciation soit arbitraire dans son résultat. Il ne suffit pas non plus qu'une solution différente puisse être tenue pour également concevable, ou apparaisse même préférable (ATF 129 I 49 consid. 4 p. 58; 127 I 38 consid. 2 p. 40, 126 I 168 consid. 3a p. 170; voir aussi ATF 129 I 8 consid. 2.1 in fine p. 9).
2. La Cour d'appel pénal a exposé qu'en "confectionnant des reconnaissances de dettes fausses, [...] la recourante a manifestement voulu se procurer une amélioration de sa situation personnelle, eu égard aux emprunts qu'elle avait faits, sous des motifs fallacieux, à son (premier) mari".
Le jugement du 15 mai 2003 ne comporte aucune constatation relative à une éventuelle convention de prêt entre B._ et la recourante; au contraire, il mentionne que la nature juridique de la prestation effectivement reçue par celle-ci, prêt ou donation, n'est pas établie. L'arrêt attaqué n'explique pas comment les juges d'appel se sont convaincus, eux, que ladite prestation était fournie à charge de restitution. Cependant, la critique soumise au Tribunal fédéral, à ce sujet, ne met en cause que les motifs de ce prononcé; elle est inapte à invalider son résultat. En effet, à l'instar du Juge de police, la Cour d'appel pénal a de toute manière retenu en fait que les faux étaient destinés à décourager d'éventuelles réclamations de B._ tendant à la restitution de son argent, quel que fût le fondement juridique de ces prétentions, et que, en droit, ces documents étaient donc créés dans le dessein de procurer un avantage illicite à la recourante. Cette constatation de fait n'est pas contredite devant le Tribunal fédéral. Pour le surplus, savoir si elle est suffisante au regard de l'art. 251 CP est une question de droit qui ne pouvait être soulevée, éventuellement, qu'au moyen d'un pourvoi en nullité; la Cour de céans n'en connaît donc pas dans le cadre du recours de droit public. Celui-ci se révèle mal fondé et sera, par conséquent, rejeté.
Le jugement du 15 mai 2003 ne comporte aucune constatation relative à une éventuelle convention de prêt entre B._ et la recourante; au contraire, il mentionne que la nature juridique de la prestation effectivement reçue par celle-ci, prêt ou donation, n'est pas établie. L'arrêt attaqué n'explique pas comment les juges d'appel se sont convaincus, eux, que ladite prestation était fournie à charge de restitution. Cependant, la critique soumise au Tribunal fédéral, à ce sujet, ne met en cause que les motifs de ce prononcé; elle est inapte à invalider son résultat. En effet, à l'instar du Juge de police, la Cour d'appel pénal a de toute manière retenu en fait que les faux étaient destinés à décourager d'éventuelles réclamations de B._ tendant à la restitution de son argent, quel que fût le fondement juridique de ces prétentions, et que, en droit, ces documents étaient donc créés dans le dessein de procurer un avantage illicite à la recourante. Cette constatation de fait n'est pas contredite devant le Tribunal fédéral. Pour le surplus, savoir si elle est suffisante au regard de l'art. 251 CP est une question de droit qui ne pouvait être soulevée, éventuellement, qu'au moyen d'un pourvoi en nullité; la Cour de céans n'en connaît donc pas dans le cadre du recours de droit public. Celui-ci se révèle mal fondé et sera, par conséquent, rejeté.
3. Selon l'art. 152 OJ, le Tribunal fédéral peut accorder l'assistance judiciaire à une partie à condition que celle-ci soit dans le besoin et que ses conclusions ne paraissent pas d'emblée vouées à l'échec. En l'occurrence, la procédure entreprise devant le Tribunal fédéral n'avait manifestement aucune chance de succès, ce qui entraîne le rejet de la demande d'assistance judiciaire.
La recourante, qui succombe, doit acquitter l'émolument judiciaire.
Par ces motifs, le Tribunal fédéral prononce:
Par ces motifs, le Tribunal fédéral prononce:
1. Le recours est rejeté.
1. Le recours est rejeté.
2. La demande d'assistance judiciaire est rejetée.
2. La demande d'assistance judiciaire est rejetée.
3. La recourante acquittera un émolument judiciaire de 1'000 fr.
3. La recourante acquittera un émolument judiciaire de 1'000 fr.
4. Le présent arrêt est communiqué en copie au mandataire de la recourante, au Ministère public et au Tribunal cantonal du canton de Fribourg.
Lausanne, le 23 septembre 2004
Au nom de la Ire Cour de droit public
du Tribunal fédéral suisse
Le président: Le greffier: