Commit cbb1154a authored by André Pacak's avatar André Pacak

refactor type elimination transformation

parent 4ac94315
......@@ -25,6 +25,7 @@
<dependency reexport="false">1bc49cec-41e6-417f-a12b-f0e0125494e9(org.inca.core#4530729936991344007)</dependency>
</dependencies>
<languageVersions>
<language slang="l:ab9b5480-36a1-4fc2-9c9d-f0faa4fc1b71:TypeLang" version="0" />
<language slang="l:f3061a53-9226-4cc5-a443-f952ceaf5816:jetbrains.mps.baseLanguage" version="6" />
<language slang="l:fd392034-7849-419d-9071-12563d152375:jetbrains.mps.baseLanguage.closures" version="0" />
<language slang="l:83888646-71ce-4f1c-9c53-c54016f6ad4f:jetbrains.mps.baseLanguage.collections" version="0" />
......@@ -64,6 +65,7 @@
<module reference="f2801650-65d5-424e-bb1b-463a8781b786(jetbrains.mps.baseLanguage.javadoc)" version="0" />
<module reference="e39e4a59-8cb6-498e-860e-8fa8361c0d90(jetbrains.mps.baseLanguage.scopes)" version="0" />
<module reference="2d3c70e9-aab2-4870-8d8d-6036800e4103(jetbrains.mps.kernel)" version="0" />
<module reference="d936855b-48da-4812-a8a0-2bfddd633ac5(jetbrains.mps.lang.behavior.api)" version="0" />
<module reference="ceab5195-25ea-4f22-9b92-103b95ca8c0c(jetbrains.mps.lang.core)" version="0" />
<module reference="446c26eb-2b7b-4bf0-9b35-f83fa582753e(jetbrains.mps.lang.modelapi)" version="0" />
<module reference="7866978e-a0f0-4cc7-81bc-4d213d9375e1(jetbrains.mps.lang.smodel)" version="1" />
......@@ -163,6 +165,7 @@
<module reference="f2801650-65d5-424e-bb1b-463a8781b786(jetbrains.mps.baseLanguage.javadoc)" version="0" />
<module reference="e39e4a59-8cb6-498e-860e-8fa8361c0d90(jetbrains.mps.baseLanguage.scopes)" version="0" />
<module reference="2d3c70e9-aab2-4870-8d8d-6036800e4103(jetbrains.mps.kernel)" version="0" />
<module reference="d936855b-48da-4812-a8a0-2bfddd633ac5(jetbrains.mps.lang.behavior.api)" version="0" />
<module reference="ceab5195-25ea-4f22-9b92-103b95ca8c0c(jetbrains.mps.lang.core)" version="0" />
<module reference="a9e4c532-c5f5-4bb7-99ef-42abb73bbb70(jetbrains.mps.lang.descriptor.aspects)" version="0" />
<module reference="446c26eb-2b7b-4bf0-9b35-f83fa582753e(jetbrains.mps.lang.modelapi)" version="0" />
......
......@@ -3,6 +3,8 @@
<persistence version="9" />
<languages>
<use id="f3061a53-9226-4cc5-a443-f952ceaf5816" name="jetbrains.mps.baseLanguage" version="8" />
<use id="ab9b5480-36a1-4fc2-9c9d-f0faa4fc1b71" name="TypeLang" version="0" />
<use id="f2801650-65d5-424e-bb1b-463a8781b786" name="jetbrains.mps.baseLanguage.javadoc" version="2" />
<devkit ref="a2eb3a43-fcc2-4200-80dc-c60110c4862d(jetbrains.mps.devkit.templates)" />
</languages>
<imports>
......@@ -43,9 +45,13 @@
<child id="1197027771414" name="operand" index="2Oq$k0" />
<child id="1197027833540" name="operation" index="2OqNvi" />
</concept>
<concept id="1197029447546" name="jetbrains.mps.baseLanguage.structure.FieldReferenceOperation" flags="nn" index="2OwXpG">
<reference id="1197029500499" name="fieldDeclaration" index="2Oxat5" />
</concept>
<concept id="1145552977093" name="jetbrains.mps.baseLanguage.structure.GenericNewExpression" flags="nn" index="2ShNRf">
<child id="1145553007750" name="creator" index="2ShVmc" />
</concept>
<concept id="1070475354124" name="jetbrains.mps.baseLanguage.structure.ThisExpression" flags="nn" index="Xjq3P" />
<concept id="1070475926800" name="jetbrains.mps.baseLanguage.structure.StringLiteral" flags="nn" index="Xl_RD">
<property id="1070475926801" name="value" index="Xl_RC" />
</concept>
......@@ -100,6 +106,7 @@
<concept id="1068580123137" name="jetbrains.mps.baseLanguage.structure.BooleanConstant" flags="nn" index="3clFbT">
<property id="1068580123138" name="value" index="3clFbU" />
</concept>
<concept id="1068580123140" name="jetbrains.mps.baseLanguage.structure.ConstructorDeclaration" flags="ig" index="3clFbW" />
<concept id="1068580320020" name="jetbrains.mps.baseLanguage.structure.IntegerConstant" flags="nn" index="3cmrfG">
<property id="1068580320021" name="value" index="3cmrfH" />
</concept>
......@@ -111,6 +118,7 @@
<child id="1068581242865" name="localVariableDeclaration" index="3cpWs9" />
</concept>
<concept id="1068581242863" name="jetbrains.mps.baseLanguage.structure.LocalVariableDeclaration" flags="nr" index="3cpWsn" />
<concept id="1068581517677" name="jetbrains.mps.baseLanguage.structure.VoidType" flags="in" index="3cqZAl" />
<concept id="1206060495898" name="jetbrains.mps.baseLanguage.structure.ElsifClause" flags="ng" index="3eNFk2">
<child id="1206060619838" name="condition" index="3eO9$A" />
<child id="1206060644605" name="statementList" index="3eOfB_" />
......@@ -173,6 +181,18 @@
<child id="1199569916463" name="body" index="1bW5cS" />
</concept>
</language>
<language id="f2801650-65d5-424e-bb1b-463a8781b786" name="jetbrains.mps.baseLanguage.javadoc">
<concept id="5349172909345501395" name="jetbrains.mps.baseLanguage.javadoc.structure.BaseDocComment" flags="ng" index="P$AiS">
<child id="8465538089690331502" name="body" index="TZ5H$" />
</concept>
<concept id="5349172909345532724" name="jetbrains.mps.baseLanguage.javadoc.structure.MethodDocComment" flags="ng" index="P$JXv" />
<concept id="8465538089690331500" name="jetbrains.mps.baseLanguage.javadoc.structure.CommentLine" flags="ng" index="TZ5HA">
<child id="8970989240999019149" name="part" index="1dT_Ay" />
</concept>
<concept id="8970989240999019143" name="jetbrains.mps.baseLanguage.javadoc.structure.TextCommentLinePart" flags="ng" index="1dT_AC">
<property id="8970989240999019144" name="text" index="1dT_AB" />
</concept>
</language>
<language id="d7706f63-9be2-479c-a3da-ae92af1e64d5" name="jetbrains.mps.lang.generator.generationContext">
<concept id="1218047638031" name="jetbrains.mps.lang.generator.generationContext.structure.GenerationContextOp_CreateUniqueName" flags="nn" index="2piZGk">
<child id="1218047638032" name="baseName" index="2piZGb" />
......@@ -220,6 +240,7 @@
<child id="6733348108486823193" name="leftExpression" index="1m5AlR" />
<child id="3906496115198199033" name="conceptArgument" index="3oSUPX" />
</concept>
<concept id="1143226024141" name="jetbrains.mps.lang.smodel.structure.SModelType" flags="in" index="H_c77" />
<concept id="1145383075378" name="jetbrains.mps.lang.smodel.structure.SNodeListType" flags="in" index="2I9FWS">
<reference id="1145383142433" name="elementConcept" index="2I9WkF" />
</concept>
......@@ -232,12 +253,16 @@
<concept id="1883223317721008713" name="jetbrains.mps.lang.smodel.structure.IfInstanceOfVariable" flags="ng" index="JncvC" />
<concept id="1883223317721107059" name="jetbrains.mps.lang.smodel.structure.IfInstanceOfVarReference" flags="nn" index="Jnkvi" />
<concept id="1171305280644" name="jetbrains.mps.lang.smodel.structure.Node_GetDescendantsOperation" flags="nn" index="2Rf3mk" />
<concept id="1171323947159" name="jetbrains.mps.lang.smodel.structure.Model_NodesOperation" flags="nn" index="2SmgA7">
<child id="1758937410080001570" name="conceptArgument" index="1dBWTz" />
</concept>
<concept id="1145567426890" name="jetbrains.mps.lang.smodel.structure.SNodeListCreator" flags="nn" index="2T8Vx0">
<child id="1145567471833" name="createdType" index="2T96Bj" />
</concept>
<concept id="1154546950173" name="jetbrains.mps.lang.smodel.structure.ConceptReference" flags="ng" index="3gn64h">
<reference id="1154546997487" name="concept" index="3gnhBz" />
</concept>
<concept id="1139613262185" name="jetbrains.mps.lang.smodel.structure.Node_GetParentOperation" flags="nn" index="1mfA1w" />
<concept id="1139621453865" name="jetbrains.mps.lang.smodel.structure.Node_IsInstanceOfOperation" flags="nn" index="1mIQ4w">
<child id="1177027386292" name="conceptArgument" index="cj9EA" />
</concept>
......@@ -276,6 +301,9 @@
<concept id="1228341669568" name="jetbrains.mps.lang.smodel.structure.Node_DetachOperation" flags="nn" index="3YRAZt" />
</language>
<language id="ceab5195-25ea-4f22-9b92-103b95ca8c0c" name="jetbrains.mps.lang.core">
<concept id="1133920641626" name="jetbrains.mps.lang.core.structure.BaseConcept" flags="ng" index="2VYdi">
<child id="5169995583184591170" name="smodelAttribute" index="lGtFl" />
</concept>
<concept id="1169194658468" name="jetbrains.mps.lang.core.structure.INamedConcept" flags="ng" index="TrEIO">
<property id="1169194664001" name="name" index="TrG5h" />
</concept>
......@@ -300,6 +328,7 @@
<concept id="1153944233411" name="jetbrains.mps.baseLanguage.collections.structure.ForEachVariableReference" flags="nn" index="2GrUjf">
<reference id="1153944258490" name="variable" index="2Gs0qQ" />
</concept>
<concept id="1235566554328" name="jetbrains.mps.baseLanguage.collections.structure.AnyOperation" flags="nn" index="2HwmR7" />
<concept id="1227022159410" name="jetbrains.mps.baseLanguage.collections.structure.AddFirstElementOperation" flags="nn" index="2Ke4WJ" />
<concept id="1203518072036" name="jetbrains.mps.baseLanguage.collections.structure.SmartClosureParameterDeclaration" flags="ig" index="Rh6nW" />
<concept id="1160612413312" name="jetbrains.mps.baseLanguage.collections.structure.AddElementOperation" flags="nn" index="TSZUe" />
......@@ -318,6 +347,7 @@
</concept>
<concept id="1165525191778" name="jetbrains.mps.baseLanguage.collections.structure.GetFirstOperation" flags="nn" index="1uHKPH" />
<concept id="1165530316231" name="jetbrains.mps.baseLanguage.collections.structure.IsEmptyOperation" flags="nn" index="1v1jN8" />
<concept id="1225727723840" name="jetbrains.mps.baseLanguage.collections.structure.FindFirstOperation" flags="nn" index="1z4cxt" />
<concept id="1202120902084" name="jetbrains.mps.baseLanguage.collections.structure.WhereOperation" flags="nn" index="3zZkjj" />
<concept id="1202128969694" name="jetbrains.mps.baseLanguage.collections.structure.SelectOperation" flags="nn" index="3$u5V9" />
<concept id="1197932370469" name="jetbrains.mps.baseLanguage.collections.structure.MapElement" flags="nn" index="3EllGN">
......@@ -3836,5 +3866,1550 @@
</node>
<node concept="3Tm1VV" id="2U2uJPpv2M9" role="1B3o_S" />
</node>
<node concept="312cEu" id="7DdCaEOHNmh">
<property role="TrG5h" value="EliminateTypeArgumentHelper" />
<node concept="2tJIrI" id="7DdCaEOKV_d" role="jymVt" />
<node concept="312cEg" id="7DdCaEOLF$9" role="jymVt">
<property role="TrG5h" value="model" />
<node concept="3Tm6S6" id="7DdCaEOLFtj" role="1B3o_S" />
<node concept="H_c77" id="7DdCaEOLFzz" role="1tU5fm" />
<node concept="10Nm6u" id="7DdCaEOLFMS" role="33vP2m" />
</node>
<node concept="312cEg" id="7DdCaEOOzeJ" role="jymVt">
<property role="TrG5h" value="genContext" />
<node concept="3Tm6S6" id="7DdCaEOOyfX" role="1B3o_S" />
<node concept="1iwH7U" id="7DdCaEOOz9W" role="1tU5fm" />
<node concept="10Nm6u" id="7DdCaEOO$8r" role="33vP2m" />
</node>
<node concept="312cEg" id="7DdCaEOOCkb" role="jymVt">
<property role="TrG5h" value="declaration" />
<node concept="3Tm6S6" id="7DdCaEOOBe3" role="1B3o_S" />
<node concept="3Tqbb2" id="7DdCaEOOC82" role="1tU5fm">
<ref role="ehGHo" to="b83y:2_58u12eLDI" resolve="JudgmentDeclaration" />
</node>
<node concept="10Nm6u" id="7DdCaEOODk2" role="33vP2m" />
</node>
<node concept="2tJIrI" id="7DdCaEOLFFG" role="jymVt" />
<node concept="3clFbW" id="7DdCaEOLG7S" role="jymVt">
<node concept="3cqZAl" id="7DdCaEOLG7U" role="3clF45" />
<node concept="3Tm1VV" id="7DdCaEOLG7V" role="1B3o_S" />
<node concept="3clFbS" id="7DdCaEOLG7W" role="3clF47">
<node concept="3clFbF" id="7DdCaEOLGeH" role="3cqZAp">
<node concept="37vLTI" id="7DdCaEOLH75" role="3clFbG">
<node concept="37vLTw" id="7DdCaEOLHck" role="37vLTx">
<ref role="3cqZAo" node="7DdCaEOLHae" resolve="model" />
</node>
<node concept="2OqwBi" id="7DdCaEOLGk9" role="37vLTJ">
<node concept="Xjq3P" id="7DdCaEOLGeG" role="2Oq$k0" />
<node concept="2OwXpG" id="7DdCaEOLGwY" role="2OqNvi">
<ref role="2Oxat5" node="7DdCaEOLF$9" resolve="model" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="7DdCaEOO$m5" role="3cqZAp">
<node concept="37vLTI" id="7DdCaEOO_cI" role="3clFbG">
<node concept="37vLTw" id="7DdCaEOO_lh" role="37vLTx">
<ref role="3cqZAo" node="7DdCaEOO$dm" resolve="genContext" />
</node>
<node concept="2OqwBi" id="7DdCaEOO$sv" role="37vLTJ">
<node concept="Xjq3P" id="7DdCaEOO$m3" role="2Oq$k0" />
<node concept="2OwXpG" id="7DdCaEOO$DV" role="2OqNvi">
<ref role="2Oxat5" node="7DdCaEOOzeJ" resolve="genContext" />
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="7DdCaEOODwj" role="3cqZAp">
<node concept="37vLTI" id="7DdCaEOOEmT" role="3clFbG">
<node concept="37vLTw" id="7DdCaEOOEtN" role="37vLTx">
<ref role="3cqZAo" node="7DdCaEOODof" resolve="declaration" />
</node>
<node concept="2OqwBi" id="7DdCaEOODBE" role="37vLTJ">
<node concept="Xjq3P" id="7DdCaEOODwh" role="2Oq$k0" />
<node concept="2OwXpG" id="7DdCaEOODUV" role="2OqNvi">
<ref role="2Oxat5" node="7DdCaEOOCkb" resolve="declaration" />
</node>
</node>
</node>
</node>
</node>
<node concept="37vLTG" id="7DdCaEOLHae" role="3clF46">
<property role="TrG5h" value="model" />
<node concept="H_c77" id="7DdCaEOLHad" role="1tU5fm" />
</node>
<node concept="37vLTG" id="7DdCaEOO$dm" role="3clF46">
<property role="TrG5h" value="genContext" />
<node concept="1iwH7U" id="7DdCaEOO$jo" role="1tU5fm" />
</node>
<node concept="37vLTG" id="7DdCaEOODof" role="3clF46">
<property role="TrG5h" value="declaration" />
<node concept="3Tqbb2" id="7DdCaEOODu$" role="1tU5fm">
<ref role="ehGHo" to="b83y:2_58u12eLDI" resolve="JudgmentDeclaration" />
</node>
</node>
</node>
<node concept="2tJIrI" id="7DdCaEOLHdu" role="jymVt" />
<node concept="3clFb_" id="7DdCaEOOIwg" role="jymVt">
<property role="TrG5h" value="removeTypeArgumentOfDeclaration" />
<node concept="3clFbS" id="7DdCaEOOIwi" role="3clF47">
<node concept="3SKdUt" id="7DdCaEOOIwj" role="3cqZAp">
<node concept="3SKdUq" id="7DdCaEOOIwk" role="3SKWNk">
<property role="3SKdUp" value="TODO do not use hard-coded names (generalize)" />
</node>
</node>
<node concept="3cpWs8" id="7DdCaEOOIwL" role="3cqZAp">
<node concept="3cpWsn" id="7DdCaEOOIwM" role="3cpWs9">
<property role="TrG5h" value="index" />
<node concept="10Oyi0" id="7DdCaEOOIwN" role="1tU5fm" />
<node concept="1rXfSq" id="7DdCaEOP8CB" role="33vP2m">
<ref role="37wK5l" node="7DdCaEOOhFm" resolve="getIndexOfTypeSort" />
</node>
</node>
</node>
<node concept="3cpWs6" id="7DdCaEOOIwU" role="3cqZAp">
<node concept="2OqwBi" id="7DdCaEOOIwV" role="3cqZAk">
<node concept="37vLTw" id="7DdCaEOONi6" role="2Oq$k0">
<ref role="3cqZAo" node="7DdCaEOOCkb" resolve="declaration" />
</node>
<node concept="2qgKlT" id="7DdCaEOOIwX" role="2OqNvi">
<ref role="37wK5l" to="pgas:4XA4NEmJ4Wv" resolve="removeSort" />
<node concept="37vLTw" id="7DdCaEOOIwY" role="37wK5m">
<ref role="3cqZAo" node="7DdCaEOOIwM" resolve="index" />
</node>
</node>
</node>
</node>
</node>
<node concept="3Tqbb2" id="7DdCaEOOIx0" role="3clF45">
<ref role="ehGHo" to="b83y:2_58u12eLDI" resolve="JudgmentDeclaration" />
</node>
<node concept="P$JXv" id="7DdCaEOOIx3" role="lGtFl">
<node concept="TZ5HA" id="7DdCaEOOIx4" role="TZ5H$">
<node concept="1dT_AC" id="7DdCaEOOIx5" role="1dT_Ay">
<property role="1dT_AB" value="Remove type argument of judgment declaration" />
</node>
</node>
</node>
<node concept="3Tm1VV" id="7DdCaEOOIwZ" role="1B3o_S" />
</node>
<node concept="2tJIrI" id="32CDcOyzO4x" role="jymVt" />
<node concept="3clFb_" id="7DdCaEOPmpN" role="jymVt">
<property role="TrG5h" value="createRequiredDeclaration" />
<node concept="3clFbS" id="7DdCaEOPmpP" role="3clF47">
<node concept="3cpWs8" id="7DdCaEOPFVN" role="3cqZAp">
<node concept="3cpWsn" id="7DdCaEOPFVO" role="3cpWs9">
<property role="TrG5h" value="typeSort" />
<node concept="3Tqbb2" id="7DdCaEOPFVL" role="1tU5fm">
<ref role="ehGHo" to="b83y:2U2uJPpd5x5" resolve="Sort" />
</node>
<node concept="2OqwBi" id="7DdCaEOPFVP" role="33vP2m">
<node concept="37vLTw" id="7DdCaEOPFVQ" role="2Oq$k0">
<ref role="3cqZAo" node="7DdCaEOOCkb" resolve="declaration" />
</node>
<node concept="2qgKlT" id="7DdCaEOPFVR" role="2OqNvi">
<ref role="37wK5l" to="pgas:7DdCaEODOqJ" resolve="getInfiniteInputSortByName" />
<node concept="Xl_RD" id="7DdCaEOPFVS" role="37wK5m">
<property role="Xl_RC" value="Type" />
</node>
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="7DdCaEOPmqi" role="3cqZAp">
<node concept="3cpWsn" id="7DdCaEOPmqj" role="3cpWs9">
<property role="TrG5h" value="index" />
<node concept="10Oyi0" id="7DdCaEOPmqk" role="1tU5fm" />
<node concept="1rXfSq" id="7DdCaEOPrWQ" role="33vP2m">
<ref role="37wK5l" node="7DdCaEOOhFm" resolve="getIndexOfTypeSort" />
</node>
</node>
</node>
<node concept="3clFbH" id="7DdCaEOPmqm" role="3cqZAp" />
<node concept="3cpWs8" id="7DdCaEOPmqn" role="3cqZAp">
<node concept="3cpWsn" id="7DdCaEOPmqo" role="3cpWs9">
<property role="TrG5h" value="xRequiredDecl" />
<node concept="3Tqbb2" id="7DdCaEOPmqp" role="1tU5fm">
<ref role="ehGHo" to="b83y:2_58u12eLDI" resolve="JudgmentDeclaration" />
</node>
<node concept="2OqwBi" id="7DdCaEOPmqq" role="33vP2m">
<node concept="37vLTw" id="7DdCaEOP$bN" role="2Oq$k0">
<ref role="3cqZAo" node="7DdCaEOOCkb" resolve="declaration" />
</node>
<node concept="2qgKlT" id="7DdCaEOPmqs" role="2OqNvi">
<ref role="37wK5l" to="pgas:4XA4NEmJ4Wv" resolve="removeSort" />
<node concept="37vLTw" id="7DdCaEOPmqt" role="37wK5m">
<ref role="3cqZAo" node="7DdCaEOPmqj" resolve="index" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="7DdCaEOPmqu" role="3cqZAp">
<node concept="37vLTI" id="7DdCaEOPmqv" role="3clFbG">
<node concept="2OqwBi" id="7DdCaEOPmqw" role="37vLTJ">
<node concept="37vLTw" id="7DdCaEOPmqx" role="2Oq$k0">
<ref role="3cqZAo" node="7DdCaEOPmqo" resolve="xRequiredDecl" />
</node>
<node concept="3TrcHB" id="7DdCaEOPmqy" role="2OqNvi">
<ref role="3TsBF5" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
<node concept="3cpWs3" id="7DdCaEOPmqz" role="37vLTx">
<node concept="Xl_RD" id="7DdCaEOPmq$" role="3uHU7w">
<property role="Xl_RC" value="Required" />
</node>
<node concept="2OqwBi" id="7DdCaEOPmq_" role="3uHU7B">
<node concept="37vLTw" id="7DdCaEOPIl6" role="2Oq$k0">
<ref role="3cqZAo" node="7DdCaEOOCkb" resolve="declaration" />
</node>
<node concept="3TrcHB" id="7DdCaEOPmqB" role="2OqNvi">
<ref role="3TsBF5" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
</node>
</node>
</node>
<node concept="3clFbF" id="7DdCaEOPmqC" role="3cqZAp">
<node concept="2OqwBi" id="7DdCaEOPmqD" role="3clFbG">
<node concept="37vLTw" id="7DdCaEOPmqE" role="2Oq$k0">
<ref role="3cqZAo" node="7DdCaEOPmqo" resolve="xRequiredDecl" />
</node>
<node concept="2qgKlT" id="7DdCaEOPmqF" role="2OqNvi">
<ref role="37wK5l" to="pgas:5bZNdPkea12" resolve="setPre" />
<node concept="2pJPEk" id="7DdCaEOPmqG" role="37wK5m">
<node concept="2pJPED" id="7DdCaEOPmqH" role="2pJPEn">
<ref role="2pJxaS" to="b83y:2_58u12cYDt" resolve="Delimiter" />
<node concept="2pJxcG" id="7DdCaEOPmqI" role="2pJxcM">
<ref role="2pJxcJ" to="b83y:2_58u12cYDu" resolve="text" />
<node concept="2OqwBi" id="7DdCaEOPmqJ" role="2pJxcZ">
<node concept="37vLTw" id="7DdCaEOPmqK" role="2Oq$k0">
<ref role="3cqZAo" node="7DdCaEOPmqo" resolve="xRequiredDecl" />
</node>
<node concept="3TrcHB" id="7DdCaEOPmqL" role="2OqNvi">
<ref role="3TsBF5" to="tpck:h0TrG11" resolve="name" />
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node concept="3cpWs8" id="7DdCaEOPmqM" role="3cqZAp">
<node concept="3cpWsn" id="7DdCaEOPmqN" role="3cpWs9">
<property role="TrG5h" value="xRequiredOutputSort" />
<node concept="3Tqbb2" id="7DdCaEOPmqO" role="1tU5fm">
<ref role="ehGHo" to="b83y:2U2uJPpd5x5" resolve="Sort" />
</node>
<node concept="2OqwBi" id="7DdCaEOPmqP" role="33vP2m">
<node concept="37vLTw" id="7DdCaEOPIxm" role="2Oq$k0">
<ref role="3cqZAo" node="7DdCaEOPFVO" resolve="typeSort" />
</node>
<node concept="1$rogu" id="7DdCaEOPmqR" role="2OqNvi" />
</node>
</node>
</node>
<node concept="3clFbF" id="7DdCaEOPmqS" role="3cqZAp">
<node concept="37vLTI" id="7DdCaEOPmqT" role="3clFbG">
<node concept="2pJPEk" id="7DdCaEOPmqU" role="37vLTx">
<node concept="2pJPED" id="7DdCaEOPmqV" role="2pJPEn">
<ref role="2pJxaS" to="b83y:2_58u12cYDp" resolve="SortOutputMode" />
</node>
</node>
<node concept="2OqwBi" id="7DdCaEOPmqW" role="37vLTJ">
<node concept="37vLTw" id="7DdCaEOPmqX" role="2Oq$k0">
<ref role="3cqZAo" node="7DdCaEOPmqN" resolve="xRequiredOutputSort" />
</node>
<node concept="3TrEf2" id="7DdCaEOPmqY" role="2OqNvi">
<ref role="3Tt5mk" to="b83y:2_58u12cYDi" resolve="mode" />
</node>
</node>
</node>
</node>
<node concept="3clFbH" id="7DdCaEOPmqZ" role="3cqZAp" />
<node concept="3cpWs8" id="7DdCaEOPmr0" role="3cqZAp">
<node concept="3cpWsn" id="7DdCaEOPmr1" role="3cpWs9">
<property role="TrG5h" value="xRequiredDeclWithSort" />
<node concept="3Tqbb2" id="7DdCaEOPmr2" role="1tU5fm">
<ref role="ehGHo" to="b83y:2_58u12eLDI" resolve="JudgmentDeclaration" />
</node>
<node concept="2OqwBi" id="7DdCaEOPmr3" role="33vP2m">
<node concept="37vLTw" id="7DdCaEOPmr4" role="2Oq$k0">
<ref role="3cqZAo" node="7DdCaEOPmqo" resolve="xRequiredDecl" />
</node>
<node concept="2qgKlT" id="7DdCaEOPmr5" role="2OqNvi">
<ref role="37wK5l" to="pgas:677Mj2_GY7K" resolve="addSort" />
<node concept="2pJPEk" id="7DdCaEOPmr6" role="37wK5m">
<node concept="2pJPED" id="7DdCaEOPmr7" role="2pJPEn">
<ref role="2pJxaS" to="b83y:2_58u12cYDt" resolve="Delimiter" />
<node concept="2pJxcG" id="7DdCaEOPmr8" role="2pJxcM">
<ref role="2pJxcJ" to="b83y:2_58u12cYDu" resolve="text" />
<node concept="Xl_RD" id="7DdCaEOPmr9" role="2pJxcZ">
<property role="Xl_RC" value="=&gt;" />
</node>
</node>
</node>
</node>
<node concept="37vLTw" id="7DdCaEOPmra" role="37wK5m">
<ref role="3cqZAo" node="7DdCaEOPmqN" resolve="xRequiredOutputSort" />
</node>
</node>
</node>
</node>
</node>
<node concept="3cpWs6" id="7DdCaEOPmrb" role="3cqZAp">
<node concept="37vLTw" id="7DdCaEOPmrc" role="3cqZAk">
<ref role="3cqZAo" node="7DdCaEOPmr1" resolve="xRequiredDeclWithSort" />
</node>
</node>
</node>
<node concept="3Tqbb2" id="7DdCaEOPmrd" role="3clF45">
<ref role="ehGHo" to="b83y:2_58u12eLDI" resolve="JudgmentDeclaration" />
</node>
<node concept="P$JXv" id="7DdCaEOPmrg" role="lGtFl">
<node concept="TZ5HA" id="7DdCaEOPmrh" role="TZ5H$">
<node concept="1dT_AC" id="7DdCaEOPmri" role="1dT_Ay">
<property role="1dT_AB" value="Create declaration for reconstructing type argument based on judgment declaration" />
</node>
</node>
</node>
<node concept="3Tm1VV" id="7DdCaEOPmrj" role="1B3o_S" />
</node>
<node concept="2tJIrI" id="7DdCaEOKVug" role="jymVt" />
<node concept="2tJIrI" id="32CDcOyzS$j" role="jymVt" />
<node concept="3clFb_" id="7DdCaEOLIa8" role="jymVt">
<property role="TrG5h" value="getRecursiveRulesOfDeclaration" />
<node concept="3clFbS" id="7DdCaEOLIab" role="3clF47">
<node concept="3cpWs8" id="5YqjVV7pITj" role="3cqZAp">
<node concept="3cpWsn" id="5YqjVV7pITk" role="3cpWs9">
<property role="TrG5h" value="rules" />
<node concept="2OqwBi" id="7DdCaEOLKgW" role="33vP2m">
<node concept="2OqwBi" id="5YqjVV7pITl" role="2Oq$k0">
<node concept="2OqwBi" id="5YqjVV7pITm" role="2Oq$k0">
<node concept="37vLTw" id="7DdCaEOLJwr" role="2Oq$k0">
<ref role="3cqZAo" node="7DdCaEOLF$9" resolve="model" />
</node>
<node concept="2SmgA7" id="5YqjVV7pITo" role="2OqNvi">
<node concept="chp4Y" id="5YqjVV7pPan" role="1dBWTz">
<ref role="cht4Q" to="b83y:2_58u12eCWN" resolve="Rule" />
</node>
</node>
</node>
<node concept="3zZkjj" id="5YqjVV7pITq" role="2OqNvi">
<node concept="1bVj0M" id="5YqjVV7pITr" role="23t8la">
<node concept="3clFbS" id="5YqjVV7pITs" role="1bW5cS">
<node concept="3clFbJ" id="5bZNdPkahWp" role="3cqZAp">
<node concept="3clFbS" id="5bZNdPkahWr" role="3clFbx">
<node concept="3cpWs6" id="5bZNdPkb_9F" role="3cqZAp">
<node concept="3clFbC" id="5bZNdPka_mO" role="3cqZAk">
<node concept="2OqwBi" id="5bZNdPkax$y" role="3uHU7B">
<node concept="1PxgMI" id="5bZNdPkawXR" role="2Oq$k0">
<node concept="chp4Y" id="5bZNdPkaxde" role="3oSUPX">
<ref role="cht4Q" to="b83y:677Mj2_ELav" resolve="JudgmentInstanceWithDeclaration" />
</node>
<node concept="2OqwBi" id="5bZNdPkaqll" role="1m5AlR">
<node concept="37vLTw" id="5bZNdPkapX$" role="2Oq$k0">
<ref role="3cqZAo" node="5YqjVV7pITN" resolve="it" />
</node>
<node concept="3TrEf2" id="5bZNdPkasza" role="2OqNvi">
<ref role="3Tt5mk" to="b83y:2_58u12eCXl" resolve="conclusion" />
</node>
</node>
</node>
<node concept="2qgKlT" id="5bZNdPka$TD" role="2OqNvi">
<ref role="37wK5l" to="pgas:iMPJyMM1Nb" resolve="getJudgment" />
</node>
</node>
<node concept="37vLTw" id="32CDcOy$0PR" role="3uHU7w">
<ref role="3cqZAo" node="7DdCaEOOCkb" resolve="declaration" />
</node>
</node>
</node>
</node>
<node concept="2OqwBi" id="5bZNdPkamQI" role="3clFbw">
<node concept="2OqwBi" id="5bZNdPkaiqE" role="2Oq$k0">
<node concept="37vLTw" id="5bZNdPkai6x" role="2Oq$k0">
<ref role="3cqZAo" node="5YqjVV7pITN" resolve="it" />
</node>
<node concept="3TrEf2" id="5bZNdPkakNP" role="2OqNvi">
<ref role="3Tt5mk" to="b83y:2_58u12eCXl" resolve="conclusion" />
</node>
</node>
<node concept="1mIQ4w" id="5bZNdPkap3P" role="2OqNvi">
<node concept="chp4Y" id="5bZNdPkapia" role="cj9EA">
<ref role="cht4Q" to="b83y:677Mj2_ELav" resolve="JudgmentInstanceWithDeclaration" />
</node>
</node>
</node>
<node concept="9aQIb" id="5bZNdPkapwB" role="9aQIa">
<node concept="3clFbS" id="5bZNdPkapwC" role="9aQI4">
<node concept="3cpWs6" id="5bZNdPkbz2z" role="3cqZAp">
<node concept="3clFbT" id="5bZNdPkapJ3" role="3cqZAk" />
</node>
</node>
</node>
</node>
</node>
<node concept="Rh6nW" id="5YqjVV7pITN" role="1bW2Oz">
<property role="TrG5h" value="it" />
<node concept="2jxLKc" id="5YqjVV7pITO" role="1tU5fm" />
</node>
</node>
</node>
</node>
<node concept="ANE8D" id="7DdCaEOM3ly" role="2OqNvi" />
</node>
<node concept="2I9FWS" id="7DdCaEOM5Rs" role="1tU5fm">
<ref role="2I9WkF" to="b83y:2_58u12eCWN" resolve="Rule" />
</node>
</node>
</node>
<node concept="3cpWs6" id="7DdCaEOM4ol" role="3cqZAp">
<node concept="37vLTw" id="7DdCaEOM6F4" role="3cqZAk">
<ref role="3cqZAo" node="5YqjVV7pITk" resolve="rules" />
</node>
</node>
</node>
<node concept="3Tm1VV" id="7DdCaEOLHGo" role="1B3o_S" />
<node concept="2I9FWS" id="7DdCaEOLHOa" role="3clF45">
<ref role="2I9WkF" to="b83y:2_58u12eCWN" resolve="Rule" />
</node>
<node concept="P$JXv" id="32CDcOyzVs6" role="lGtFl">
<node concept="TZ5HA" id="32CDcOyzVs7" role="TZ5H$">
<node concept="1dT_AC" id="32CDcOyzVs8" role="1dT_Ay">
<property role="1dT_AB" value="fetch rules that are recursively defined for declaration" />
</node>
</node>
</node>
</node>
<node concept="2tJIrI" id="7DdCaEOM7QN" role="jymVt" />
<node concept="3clFb_" id="7DdCaEOMbqk" role="jymVt">
<property role="TrG5h" value="createRequiredPremise" />
<node concept="3clFbS" id="7DdCaEOMbqn" role="3clF47">
<node concept="3cpWs8" id="5YqjVV7u91$" role="3cqZAp">
<node concept="3cpWsn" id="5YqjVV7u91_" role="3cpWs9">
<property role="TrG5h" value="arguments" />
<node concept="_YKpA" id="5YqjVV7u91p" role="1tU5fm">
<node concept="3Tqbb2" id="5YqjVV7u91s" role="_ZDj9">
<ref role="ehGHo" to="b83y:2_58u12g7Tn" resolve="IMetaTerm" />
</node>
</node>
<node concept="2OqwBi" id="5YqjVV7u91A" role="33vP2m">
<node concept="2OqwBi" id="5YqjVV7u91B" role="2Oq$k0">
<node concept="37vLTw" id="5YqjVV7u91C" role="2Oq$k0">
<ref role="3cqZAo" node="7DdCaEOMbNJ" resolve="rule" />
</node>
<node concept="3TrEf2" id="5YqjVV7u91D" role="2OqNvi">
<ref role="3Tt5mk" to="b83y:2_58u12eCXl" resolve="conclusion" />
</node>
</node>
<node concept="2qgKlT" id="5YqjVV7u91E" role="2OqNvi">
<ref role="37wK5l" to="pgas:5YqjVV7s$$Q" resolve="getArguments" />
</node>
</node>
</node>
</node>