def escape_reverse_shape

qasim-bend-kit@0.1.0.2 · proof/JSON_LexWhitespaceProof.bend:271

import qasim-bend-kit@0.1.0.2/proof/JSON_LexWhitespaceProof.bend as JSONLexWhitespaceProof
import Base
import qasim-bend-kit@0.1.0.2/libs/JSON.bend as J
import qasim-bend-kit@0.1.0.2/proof/JSON_StringProof.bend as S

271def escape_reverse_shape(+text: String,
272                         +reversed: String) -> {String.reverse(escape_reverse(text, reversed)) == String.reverse(reversed) ++ J.escape_string(text) : String}:
273    match text:
274        case SNil{}: Equal.sym(String, String.reverse(reversed) ++ J.escape_string(SNil{}), String.reverse(reversed), S.append_nil(String.reverse(reversed)))
275        case SCon{head, tail}:
276            Equal.trans(String,
277                String.reverse(escape_reverse(tail, String.reverse(J.escape_char(head)) ++ reversed)),
278                String.reverse(String.reverse(J.escape_char(head)) ++ reversed) ++ J.escape_string(tail),
279                String.reverse(reversed) ++ J.escape_string(SCon{head, tail}),
280                escape_reverse_shape(tail, String.reverse(J.escape_char(head)) ++ reversed),
281                Equal.trans(String,
282                    String.reverse(String.reverse(J.escape_char(head)) ++ reversed) ++ J.escape_string(tail),
283                    (String.reverse(reversed) ++ String.reverse(String.reverse(J.escape_char(head)))) ++ J.escape_string(tail),
284                    String.reverse(reversed) ++ (J.escape_char(head) ++ J.escape_string(tail)),
285                    Equal.cong(String, String, value => value ++ J.escape_string(tail),
286                        String.reverse(String.reverse(J.escape_char(head)) ++ reversed),
287                        String.reverse(reversed) ++ String.reverse(String.reverse(J.escape_char(head))),
288                        S.reverse_append(String.reverse(J.escape_char(head)), reversed)),
289                    Equal.trans(String,
290                        (String.reverse(reversed) ++ String.reverse(String.reverse(J.escape_char(head)))) ++ J.escape_string(tail),
291                        String.reverse(reversed) ++ (String.reverse(String.reverse(J.escape_char(head))) ++ J.escape_string(tail)),
292                        String.reverse(reversed) ++ (J.escape_char(head) ++ J.escape_string(tail)),
293                        S.append_assoc(String.reverse(reversed), String.reverse(String.reverse(J.escape_char(head))), J.escape_string(tail)),
294                        Equal.cong(String, String, value => String.reverse(reversed) ++ (value ++ J.escape_string(tail)),
295                            String.reverse(String.reverse(J.escape_char(head))), J.escape_char(head), S.reverse_twice(J.escape_char(head))))))

Uses (13)

Used by (1)