|
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
|
|
<org.eventb.core.prFile version="1"> |
|
|
<org.eventb.core.prProof name="p_ctr/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m1,m2" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3,p4"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p3,p4"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p10"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m1,m2)" org.eventb.core.prGoal="p9" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p13"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p16" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p18"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p1"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p19"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p20" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬m1=m2⇒m1∈dom(ports)∧ports∈Model ⇸ ℙ(Port)∧m2∈dom(ports)"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="m1∈dom(ports)∧ports∈Model ⇸ ℙ(Port)∧m2∈dom(ports)"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="m2∈Model"> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="m1∈dom(ports)"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒m1∈dom(ports)∧ports∈Model ⇸ ℙ(Port)∧m2∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬m1=m2"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒m1∈dom(ports)∧ports∈Model ⇸ ℙ(Port)∧m2∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="m1∈Model"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="m2∈dom(ports)"> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="pc_ctr/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6,p7"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p6,p7"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p8" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p16"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p18" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p20" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p21" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p22"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p2"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p23"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p23" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p4"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p20" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p21" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p25"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p4"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p26"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p26" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p20" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p21" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="m∈dom(components)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="m∈Model"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀m⦂Model·m∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="(∀m⦂Model·m∈dom(p_component))∧p_component∈Model ⇸ ℙ(Port × Component)∧(∀m⦂Model·m∈dom(ports))∧ports∈Model ⇸ ℙ(Port)∧(∀m⦂Model·m∈dom(components))"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)∧m∈dom(ports)∧ports∈Model ⇸ ℙ(Port)∧m∈dom(components)∧components∈Model ⇸ ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·m∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)∧m∈dom(ports)∧ports∈Model ⇸ ℙ(Port)∧m∈dom(components)∧⊤"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="m∈dom(ports)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="m∈dom(p_component)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀m⦂Model·m∈dom(components)"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀m⦂Model·m∈dom(ports)"/> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="INITIALISATION/p/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p2"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Mdl∈Model"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈Model"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="¬Mdl=Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Mdl≠Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="INITIALISATION/p_ctr/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="m1,m2" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p4"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p5"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m1,m2)" org.eventb.core.prGoal="p3" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8" org.eventb.core.prHyps="p7"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="ports'" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Mdl∈Model"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Pat∈Model"> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬m1=m2⇒ports'(m1)∩ports'(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Mdl=Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="ports'(m1)∩ports'(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports'(m1)∩ports'(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Mdl≠Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬m1=m2"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports'(m1)∩ports'(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="INITIALISATION/pc_ty/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p2"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p3"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Mdl∈Model"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈Model"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="¬Mdl=Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Mdl≠Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="INITIALISATION/pc_ctr/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p3"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p4"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p5"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="components'" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="p_component'" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="ports'" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Mdl∈Model"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pat∈Model"> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="p_component'(m)∈ports'(m) → components'(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="¬Mdl=Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Mdl≠Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·p_component'(m)∈ports'(m) → components'(m)"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="to_unfold_p/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3,p4"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p3,p4"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p14"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p1"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Model"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(ports)∧ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_p/pmult/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="f" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44" org.eventb.core.prSets="Component,Model,Port" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p45,p46"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p45,p46"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p28" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p47"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p48"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p49"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p50"/> |
|
|
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p51"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p50" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p23,p24,p25,p26,p27,p31,p32,p33,p34,p35,p36,p37,p52,p38,p40,p42,p43,p47,p44"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p52" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p53,p54,p55"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prHypAction> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p53,p54,p55"/> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p11,p12,p13,p14,p15,p55,p16,p17,p53,p18,p19,p20,p21,p22,p23,p54,p24,p25,p26,p27,p29,p31,p32,p33,p34,p35,p36,p37,p38,p39,p45,p46,p40,p41,p42,p43,p47,p44"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/> |
|
|
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="new_p" org.eventb.core.type="ℙ(ℤ×Port)"/> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="p_index" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Component×Port)"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="p_index∈dom(inst2pat_p) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="inst2pat_p[IPort]⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="inst2pat_p;ports∼=ports∼;inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="container⊆f"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="p ↦ c∈to_unfold_p_in"/> |
|
|
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="new_p∈1 ‥ p_multiplicity(p) ↣ Port ∖ ran(components;ports)"/> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="p_multiplicity∈(components;(ports∪({c} × ran(new_p))))[Pattern] → ℕ"/> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_p∈(components;ports)[{Inst}] → (components;ports)[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·finite(ports[{c}])"/> |
|
|
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="p∈OPort⇒ran(new_p)⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="p_multiplicity∈(components;ports)[Pattern] → ℕ"/> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬Inst=Mdl"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(to_unfold_p_in)⊆dom(inst2pat_c)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="inst2pat_p[OPort]⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∼∈Component ⇸ Model"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ports∼∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="f;f⊆f"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_p_in∈(components;ports)[{Pat}] ↔ components[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_p_in;inst2pat_c⊆ports∼"/> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Inst≠Mdl"/> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="p∈IPort⇒ran(new_p)⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="p_multiplicity∈Port ⇸ ℤ"/> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="p∈dom(p_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="ports∈ran(components) ↔ Port"/> |
|
|
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="components∈Model ↔ Component"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_p/p_in_p_mult/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p4,p5"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p10"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p1" org.eventb.core.prHyps="p1"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p13"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p2"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈dom(p_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="p_multiplicity∈Pattern → (Port ⇸ ℕ)"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(p_multiplicity)∧p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Pattern"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_p/new_p_ty/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34" org.eventb.core.prSets="Component,Model,Port" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p35,p36,p37,p38,p39,p40,p13,p41,p42,p43,p44,p45,p46,p47,p48,p49,p24,p50,p51,p52,p53,p54,p55,p56,p57,p58,p30,p33,p59,p60,p61,p62"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p63"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p60" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p64"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p53" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p65"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p35"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p57"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p66"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p67"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p68" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p69"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p69" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p70"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p71,p8,p9,p10,p11,p12,p14,p15,p72,p73,p17,p18,p19,p20,p21,p22,p74,p25,p26,p27,p28,p70,p29,p31,p32,p63,p34"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p70" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p75,p76,p77"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prHypAction> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p75,p76,p77"/> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p63,p34"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/> |
|
|
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p78"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p78" org.eventb.core.prHyps="p31"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="p_index" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Component×Port)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="p_index∈dom(inst2pat_p) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="inst2pat_p[IPort]⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="inst2pat_p;ports∼=ports∼;inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒p_multiplicity(m)∈ports(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Pat∈dom(ports)"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="container⊆f"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="p_multiplicity∈Pattern → (Port ⇸ ℕ)"> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="p ↦ c∈to_unfold_p_in"/> |
|
|
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/> |
|
|
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ⇸ components(Inst)"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="inst2pat_p∈(components;ports)[{Inst}] → (components;ports)[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/> |
|
|
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component·finite(ports[{c}])"/> |
|
|
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="to_unfold_p_in∈ports(Pat) ⇸ components(Inst)"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/> |
|
|
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="ports∈Model → ℙ(Port)"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="p_multiplicity∈(components;ports)[Pattern] → ℕ"/> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="¬Inst=Mdl"/> |
|
|
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(to_unfold_p_in)⊆dom(inst2pat_c)"/> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="∀m⦂Model·p_component(m)∈ports(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="components∈Model → ℙ(Component)"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="inst2pat_p[OPort]⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="components∼∈Component ⇸ Model"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="ports∼∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="f;f⊆f"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_unfold_p_in∈(components;ports)[{Pat}] ↔ components[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="Inst∈dom(components)"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀m⦂Model·finite(ports(m))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="p∈dom(p_multiplicity)∧p_multiplicity∈Port ⇸ ℤ"/> |
|
|
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_p_in;inst2pat_c⊆ports∼"/> |
|
|
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Inst≠Mdl"/> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="p_multiplicity∈Port ⇸ ℤ"/> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="p∈dom(p_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="ports∈ran(components) ↔ Port"/> |
|
|
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="components∈Model ↔ Component"/> |
|
|
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="Pat∈dom(components)"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_p/p/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="f" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44" org.eventb.core.prSets="Component,Model,Port" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p45,p46"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p45,p46"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p28" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p47"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p48" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p49"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p50" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p51"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p52"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p53"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p54"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p55"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p56"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p56" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p57"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p11,p12,p13,p14,p15,p16,p17,p19,p20,p21,p23,p24,p25,p26,p27,p31,p32,p33,p34,p35,p36,p37,p57,p38,p40,p41,p42,p43,p47"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p57" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58,p59,p60"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prHypAction> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p58,p59,p60"/> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p11,p12,p13,p14,p15,p60,p16,p17,p58,p18,p19,p20,p21,p22,p23,p59,p24,p25,p26,p27,p29,p31,p32,p33,p34,p35,p36,p37,p38,p39,p45,p46,p40,p41,p42,p43,p47,p44"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/> |
|
|
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="new_p" org.eventb.core.type="ℙ(ℤ×Port)"/> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="p_index" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Component×Port)"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="p_index∈dom(inst2pat_p) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="inst2pat_p[IPort]⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="inst2pat_p;ports∼=ports∼;inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="container⊆f"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="p ↦ c∈to_unfold_p_in"/> |
|
|
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="new_p∈1 ‥ p_multiplicity(p) ↣ Port ∖ ran(components;ports)"/> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_p∈(components;ports)[{Inst}] → (components;ports)[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/> |
|
|
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ports∪({c} × ran(new_p))∈ran(components) ↔ Port"/> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·finite(ports[{c}])"/> |
|
|
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="p∈OPort⇒ran(new_p)⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="ports∈Model → ℙ(Port)"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="p_multiplicity∈(components;ports)[Pattern] → ℕ"/> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬Inst=Mdl"/> |
|
|
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(to_unfold_p_in)⊆dom(inst2pat_c)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="inst2pat_p[OPort]⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∼∈Component ⇸ Model"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ports∼∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="f;f⊆f"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_p_in∈(components;ports)[{Pat}] ↔ components[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_p_in;inst2pat_c⊆ports∼"/> |
|
|
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Inst≠Mdl"/> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="p∈IPort⇒ran(new_p)⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="p_multiplicity∈Port ⇸ ℤ"/> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="p∈dom(p_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="ports∈ran(components) ↔ Port"/> |
|
|
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="components∈Model ↔ Component"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_p/p_ctr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="f" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44" org.eventb.core.prSets="Component,Model,Port" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p45,p46"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p45,p46"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p28" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p47"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p48"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p49"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p50"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p51"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p51" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p11,p12,p13,p15,p16,p17,p19,p20,p21,p23,p24,p25,p26,p27,p31,p32,p33,p34,p35,p36,p37,p52,p38,p40,p41,p42,p43,p47,p44"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p52" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p53,p54,p55"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prHypAction> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p53,p54,p55"/> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p11,p12,p13,p14,p15,p55,p16,p17,p53,p18,p19,p20,p21,p22,p23,p54,p24,p25,p26,p27,p29,p31,p32,p33,p34,p35,p36,p37,p38,p39,p45,p46,p40,p41,p42,p43,p47,p44"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/> |
|
|
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="new_p" org.eventb.core.type="ℙ(ℤ×Port)"/> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="p_index" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Component×Port)"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="p_index∈dom(inst2pat_p) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="inst2pat_p[IPort]⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="inst2pat_p;ports∼=ports∼;inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="container⊆f"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="p ↦ c∈to_unfold_p_in"/> |
|
|
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="new_p∈1 ‥ p_multiplicity(p) ↣ Port ∖ ran(components;ports)"/> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_p∈(components;ports)[{Inst}] → (components;ports)[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(ports∪({c} × ran(new_p)))∼∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀c⦂Component·finite(ports[{c}])"/> |
|
|
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="p∈OPort⇒ran(new_p)⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="p_multiplicity∈(components;ports)[Pattern] → ℕ"/> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="¬Inst=Mdl"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(to_unfold_p_in)⊆dom(inst2pat_c)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="inst2pat_p[OPort]⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∼∈Component ⇸ Model"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ports∼∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="f;f⊆f"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_p_in∈(components;ports)[{Pat}] ↔ components[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_p_in;inst2pat_c⊆ports∼"/> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Inst≠Mdl"/> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="p∈IPort⇒ran(new_p)⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="p_multiplicity∈Port ⇸ ℤ"/> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="p∈dom(p_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="ports∈ran(components) ↔ Port"/> |
|
|
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="components∈Model ↔ Component"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_p/pc_ctr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6" org.eventb.core.prSets="Component,Model,Port" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8,p9"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p8,p9"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p16"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p17"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p19"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p20" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p19"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Inst" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p19"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Inst)" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p23" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p24"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p1"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p19,p2,p25,p26,p8,p9"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p2"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p6"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p27"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p4"/> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p5,p6,p2,p24"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/> |
|
|
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p28"> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p4"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p30"> |
|
|
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p28" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p31"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p31" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p32"/> |
|
|
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p32"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p28"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p33" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p19"> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35"> |
|
|
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p32"/> |
|
|
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p32"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p28"> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37"> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p4"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst m)" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p23" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p38"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p1"/> |
|
|
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p38"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="new_p" org.eventb.core.type="ℙ(ℤ×Port)"/> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="p_component(Inst)∪(ran(new_p) × {c})∈ports(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="p_component(Inst)∪(ran(new_p) × {c})∈ports(Inst)∪ran(new_p) → components(Inst)"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·(p_component{Inst ↦ p_component(Inst)∪(ran(new_p) × {c})})(m)∈(ports{Inst ↦ ports(Inst)∪ran(new_p)})(m) → components(m)"/> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="({Inst} ⩤ p_component)(m)∈(ports{Inst ↦ ports(Inst)∪ran(new_p)})(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m⦂Model·p_component(m)∈ports(m) → components(m)"/> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="p_component(m)∈ports(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="components∈Model → ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="p ↦ c∈to_unfold_p_in"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="p_component(Inst)∪(ran(new_p) × {c})∈ports(Inst)∪ran(new_p) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="(p_component{Inst ↦ p_component(Inst)∪(ran(new_p) × {c})})(m)∈(ports{Inst ↦ ports(Inst)∪ran(new_p)})(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬m=Inst"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="⊥"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="({Inst} ⩤ p_component)(m)∈ports(Inst)∪ran(new_p) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="p∈IPort⇒ran(new_p)⊆IPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="({Inst} ⩤ p_component)(m)∈({Inst} ⩤ ports)(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_p∈1 ‥ p_multiplicity(Pat)(p) ↣ Port ∖ union(ran(ports))"/> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="p_component(Inst)∈ports(Inst) → components(Inst)"/> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="p_component(m)∈ports(Inst)∪ran(new_p) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="p_component(Inst)∪(ran(new_p) × {c})∈(ports{Inst ↦ ports(Inst)∪ran(new_p)})(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="p_component(Inst)∪(ran(new_p) × {c})∈({Inst} ⩤ ports)(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="p∈OPort⇒ran(new_p)⊆OPort"> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="m=Inst"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="to_unfold_p_in∈ports(Pat) ↔ components(Inst)"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="p_component(m)∈({Inst} ⩤ ports)(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬⊤"/> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Inst"/> |
|
|
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="m"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prExpr> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/> |
|
|
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_p/to_unfold_p/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6,p7"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p6,p7"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p13"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p2,p3,p5,p4,p6,p7"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="new_p" org.eventb.core.type="ℙ(ℤ×Port)"/> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_p ∖ {p}⊆(ports(Pat) ∖ {p})∪ran(new_p)"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="p∈to_unfold_p"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_p∈1 ‥ p_multiplicity(Pat)(p) ↣ Port ∖ union(ran(ports))"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_p ∖ {p}⊆(ports{Pat ↦ (ports(Pat) ∖ {p})∪ran(new_p)})(Pat)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_p⊆ports(Pat)"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="p∈dom(p_multiplicity(Pat))"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_p/sp/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p4,p5"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤∧⊤"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst∈dom(ports)∧ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_p/pc_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="ae" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="Component,Model,Port" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10,p11"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p10,p11"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p18"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (p_component(Inst)∪(ran(new_p) × {c})∈Port ⇸ Component)" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p2,p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p21" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p2,p1"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Inst)" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p24"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p3"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p1,p2,p4,p5,p6,p7,p10,p11,p9,p24"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/> |
|
|
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p2,p23,p1"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ae (p_component(Inst)∪(ran(new_p) × {c}))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p2,p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p21" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p2,p25,p1"> |
|
|
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ae=p_component(Inst)∪(ran(new_p) × {c})" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p25"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p26"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p23"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p25"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Inst)" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p24"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p3"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p26,p1,p4"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/> |
|
|
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p23"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="new_p" org.eventb.core.type="ℙ(ℤ×Port)"/> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="⊤∧⊤"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m⦂Model·p_component(m)∈ports(m) → components(m)"/> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="p_component{Inst ↦ ae}∈Model → (Port ⇸ Component)"> |
|
|
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="ae=p_component(Inst)∪(ran(new_p) × {c})"> |
|
|
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="p_component{Inst ↦ p_component(Inst)∪(ran(new_p) × {c})}∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="p ↦ c∈to_unfold_p_in"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="p∈IPort⇒ran(new_p)⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="p_component(Inst)∪(ran(new_p) × {c})∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="new_p∈1 ‥ p_multiplicity(Pat)(p) ↣ Port ∖ union(ran(ports))"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Inst∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="p_component(Inst)∈ports(Inst) → components(Inst)"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="ae∈Port ⇸ Component"> |
|
|
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="p∈OPort⇒ran(new_p)⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="p_component(Inst)∪(ran(new_p) × {c})"/> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Inst"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.ae"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/> |
|
|
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_p/new_p_component/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p4,p5"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤∧⊤"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_p/p_multiplicity/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p4,p5"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pat∈dom(p_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤∧⊤"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(p_multiplicity)∧p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="instanciate_pattern/ip/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5,p6"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p5,p6"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p7" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p15"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p17" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Mdl∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(ports)∧ports∈Model ⇸ ℙ(Port)∧Mdl∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈Model"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="⊤∧⊤∧Mdl∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="instanciate_pattern/ipr/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5,p6"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p5,p6"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p7" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Mdl∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="⊤∧⊤∧⊤"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Mdl∈dom(ports)∧ports∈Model ⇸ ℙ(Port)∧Pat∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="instanciate_pattern/to_unfold_p/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9,p10"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p9,p10"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p16"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p4"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p18" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p20"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p4,p7,p1,p5,p2,p6,p8,p9,p10"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_mult_others" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="inst_components∼∈components(Mdl) ⇸ components(Pat)"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_p∪dom(inst_ports)⊆ports(Pat)"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬Mdl=Pat"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_mult_others∈components(Pat) ∖ dom(inst_components) → ℕ1"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="p_mult_others∈ports(Pat) ∖ dom(inst_ports) → ℕ1"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Mdl∈Model"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="inst_ports∈ports(Pat) ↔ ports(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_p⊆ports(Pat)∧dom(inst_ports)⊆ports(Pat)"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_p⊆ports(Pat)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="inst_ports∼∈ports(Mdl) ⇸ ports(Pat)"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="⊤∧dom(inst_ports)⊆ports(Pat)"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Mdl≠Pat"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(inst_ports)⊆ports(Pat)"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="inst_components∈components(Pat) ↔ components(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="apply_pattern/ipr/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5,p6"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p5,p6"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p7" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Mdl∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬Mdl=Pat"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="⊤∧⊤∧⊤"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Mdl∈dom(ports)∧ports∈Model ⇸ ℙ(Port)∧Pat∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Mdl≠Pat"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="apply_pattern/np/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p4,p5"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤∧⊤"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst∈dom(ports)∧ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="apply_pattern/p/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component,Model,Port" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p4,p5"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p12"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p16"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p17,p47,p48,p49,p50,p51,p7"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52,p53,p54"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prHypAction> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p52,p53,p54"/> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/> |
|
|
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="new_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Component×Port)"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="p_index∈dom(inst2pat_p) → ℕ"> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_index" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="inst2pat_p[IPort]⊆IPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_p;ports∼=ports∼;inst2pat_c"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="Pat∈Pattern"> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="container⊆f"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="inst2pat_p∈(components;ports)[{Inst}] → (components;ports)[{Pat}]"> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀c⦂Component·finite(ports[{c}])"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="p_multiplicity∈(components;ports)[Pattern] → ℕ"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="ran(to_unfold_p_in)⊆dom(inst2pat_c)"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_p[OPort]⊆OPort"> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="components∼∈Component ⇸ Model"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="ports∼∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="f;f⊆f"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="to_unfold_p_in∈(components;ports)[{Pat}] ↔ components[{Inst}]"> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="ports∪((inst_components∪new_components)∼;ports;(inst_ports∪new_ports))∈ran(components∪({Mdl} × ran(new_components))) ↔ Port"/> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="to_unfold_p_in;inst2pat_c⊆ports∼"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/> |
|
|
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="Inst∈Model ∖ Pattern"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="ports∈ran(components) ↔ Port"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∈Model ↔ Component"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="apply_pattern/p_ctr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="f" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51" org.eventb.core.prSets="Component,Model,Port,Property" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p41" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52,p53"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p52,p53"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p40" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p54"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p55"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p56"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p57"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p58" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p59"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p24,p1,p2,p3,p25,p26,p4,p28,p29,p31,p5,p32,p6,p34,p35,p36,p8,p9,p11,p37,p14,p15,p16,p43,p44,p18,p45,p46,p59,p20,p21,p22,p23,p50,p54,p51"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p59" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p60,p61,p62"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prHypAction> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p60,p61,p62"/> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p60,p7,p8,p9,p10,p11,p61,p12,p13,p14,p15,p16,p17,p18,p19,p20,p52,p53,p21,p22,p23,p54,p24,p25,p26,p27,p28,p29,p31,p32,p33,p62,p34,p35,p36,p37,p38,p39,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/> |
|
|
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="inst_props" org.eventb.core.type="ℙ(Property×Property)"/> |
|
|
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="new_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_index" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Component×Port)"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="p_index∈dom(inst2pat_p) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="inst2pat_p[IPort]⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="inst2pat_p;ports∼=ports∼;inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="container⊆f"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/> |
|
|
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="new_ports[OPort]⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="inst_ports∼;ports∼;inst_components⊆ports∼"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="inst2pat_p∈(components;ports)[{Inst}] → (components;ports)[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="inst_props∈Property ⇸ Property"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component·finite(ports[{c}])"/> |
|
|
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="inst_ports[IPort]⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/> |
|
|
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="p_multiplicity∈(components;ports)[Pattern] → ℕ"/> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="¬Inst=Mdl"/> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="ran(to_unfold_p_in)⊆dom(inst2pat_c)"/> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="new_ports[IPort]⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="inst2pat_p[OPort]⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="components∼∈Component ⇸ Model"/> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="ports∼∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="f;f⊆f"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="to_unfold_p_in∈(components;ports)[{Pat}] ↔ components[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(ports∪((inst_components∪new_components)∼;ports;(inst_ports∪new_ports)))∼∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="to_unfold_p_in;inst2pat_c⊆ports∼"/> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="inst_ports∈(components;ports)[{Inst}] ⤔ (components;ports)[{Mdl}]"/> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="ports∼[dom(inst_ports)]⊆dom(inst_components)"/> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst≠Mdl"/> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="new_ports∈(components;ports)[{Inst}] ∖ dom(inst_ports) ↣ Port ∖ ran(components;ports)"/> |
|
|
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/> |
|
|
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="inst_ports[OPort]⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="ports∈ran(components) ↔ Port"/> |
|
|
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="components∈Model ↔ Component"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="apply_pattern/pc_ctr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10" org.eventb.core.prSets="Component,Model,Port" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12,p13"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p12,p13"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p20"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p21"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p23"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p23"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p25" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p23"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Mdl)" org.eventb.core.prHyps="p5"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p28"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p5"/> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Inst)" org.eventb.core.prHyps="p5"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p29"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p5"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Z3" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p1,p2,p3,p4,p28,p9,p10,p29"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/> |
|
|
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="Z3"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p30"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p6"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p33"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p33" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p34"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p34"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p30"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p35" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p23"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p8"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p33"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p33" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p34"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p34"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p30"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p8"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p6"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p33"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p33" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p34"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p34"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p30"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p41" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p23"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p42" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p23"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p7"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p34"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p34"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p30"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p7"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p46"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p6"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p34"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p34"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p48" org.eventb.core.prHyps="p30"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p48" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p23"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p49" org.eventb.core.prHyps="p7"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p8"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p51"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p34"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p34"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p30"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p7"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p8"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p54"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p6"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p55"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst m)" org.eventb.core.prHyps="p5"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p55"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p5"/> |
|
|
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p55" org.eventb.core.prHyps="p55"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e2"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="new_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))∈ports(m) → ({Mdl} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))∈ports(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="p_component(m)∈ports(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="p_component(m)∈ports(m) → ({Mdl} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="(p_component{Mdl ↦ p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))})(m)∈(ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(m) → (components{Mdl ↦ components(Mdl)∪ran(new_components)})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))∈({Mdl} ⩤ ports)(m) → components(Mdl)∪ran(new_components)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="p_component(m)∈ports(Mdl)∪ran(new_ports) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="({Mdl} ⩤ p_component)(m)∈ports(Mdl)∪ran(new_ports) → ({Mdl} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))∈ports(Mdl)∪ran(new_ports) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="p_component(m)∈({Mdl} ⩤ ports)(m) → components(Mdl)∪ran(new_components)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="({Mdl} ⩤ p_component)(m)∈ports(Mdl)∪ran(new_ports) → components(Mdl)∪ran(new_components)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·(p_component{Mdl ↦ p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))})(m)∈(ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(m) → (components{Mdl ↦ components(Mdl)∪ran(new_components)})(m)"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))∈(ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(m) → (components{Mdl ↦ components(Mdl)∪ran(new_components)})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="dom(inst_ports)⊆dom(p_component(Inst) ▷ dom(inst_components))"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="inst_ports∼;p_component(Inst);inst_components⊆p_component(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="({Mdl} ⩤ p_component)(m)∈({Mdl} ⩤ ports)(m) → (components{Mdl ↦ components(Mdl)∪ran(new_components)})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="({Mdl} ⩤ p_component)(m)∈({Mdl} ⩤ ports)(m) → ({Mdl} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="inst_components∈components(Inst) ⤔ components(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬Inst=Mdl"/> |
|
|
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="({Mdl} ⩤ p_component)(m)∈({Mdl} ⩤ ports)(m) → components(Mdl)∪ran(new_components)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬⊤"/> |
|
|
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="p_component(m)∈({Mdl} ⩤ ports)(m) → ({Mdl} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="inst_ports∈ports(Inst) ⤔ ports(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·p_component(m)∈ports(m) → components(m)"/> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))∈({Mdl} ⩤ ports)(m) → ({Mdl} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components∈Model → ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="¬m=Mdl"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))∈({Mdl} ⩤ ports)(m) → (components{Mdl ↦ components(Mdl)∪ran(new_components)})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="({Mdl} ⩤ p_component)(m)∈ports(Mdl)∪ran(new_ports) → (components{Mdl ↦ components(Mdl)∪ran(new_components)})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="p_component(Mdl)∈ports(Mdl) → components(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))∈ports(m) → components(Mdl)∪ran(new_components)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="new_ports∈ports(Inst) ∖ dom(inst_ports) ↣ Port ∖ union(ran(ports))"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))∈ports(Mdl)∪ran(new_ports) → (components{Mdl ↦ components(Mdl)∪ran(new_components)})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="⊥"/> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))∈ports(Mdl)∪ran(new_ports) → components(Mdl)∪ran(new_components)"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Inst≠Mdl"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="p_component(m)∈ports(m) → components(Mdl)∪ran(new_components)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="p_component(Inst)∈ports(Inst) → components(Inst)"/> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))∈ports(Mdl)∪ran(new_ports) → ({Mdl} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="p_component(m)∈ports(Mdl)∪ran(new_ports) → ({Mdl} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_components∈components(Inst) ∖ dom(inst_components) ↣ Component ∖ union(ran(components))"/> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="m=Mdl"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="p_component(m)∈ports(Mdl)∪ran(new_ports) → components(Mdl)∪ran(new_components)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="({Mdl} ⩤ p_component)(m)∈(ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(m) → (components{Mdl ↦ components(Mdl)∪ran(new_components)})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="Mdl"/> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Inst"/> |
|
|
<org.eventb.core.prExpr name="e2" org.eventb.core.expression="m"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prExpr> |
|
|
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/> |
|
|
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="apply_pattern/to_unfold_p/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57" org.eventb.core.prSets="Component,Model,Port,Property"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p46" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58,p59"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p58,p59"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p34" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p60"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p48" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p61"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p62"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p63"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="p64"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Mdl" org.eventb.core.prHyps="p64"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p66"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p67"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p12" org.eventb.core.prInfHyps="p68"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p36" org.eventb.core.prInfHyps="p69"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p70"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p45" org.eventb.core.prInfHyps="p71"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p72"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p73"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p74"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p25" org.eventb.core.prInfHyps="p75"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF10" org.eventb.core.prHyps="p44" org.eventb.core.prInfHyps="p76"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT11" org.eventb.core.prHyps="p52,p16,p12,p36,p18,p45,p6,p54,p20,p25,p44"/> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="p31,p8,p39,p9,p49,p11,p26,p19,p47,p55,p56,p42,p21,p32,p23,p27,p30,p41,p2,p38,p10,p4,p52,p5,p22,p16,p51,p50,p12,p17,p36,p57,p33,p14,p18,p45,p24,p6,p7,p1,p54,p37,p29,p53,p20,p15,p43,p25,p35,p44,p40,p13,p3,p28,p58,p59,p60,p61,p64,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p78" org.eventb.core.prHyps="p77"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p78" org.eventb.core.prHyps="p30"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p52"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p52" org.eventb.core.prHyps="p52"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="inst_props" org.eventb.core.type="ℙ(Property×Property)"/> |
|
|
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="new_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈dom(ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})"/> |
|
|
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="inst_components∈components(Mdl) ⤔ components(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="dom(inst_ports)⊆dom(p_component(Mdl) ▷ dom(inst_components))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒p_multiplicity(m)∈ports(m) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Pat∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="(p_multiplicity(Pat))[ports(Pat)]⊆{1}"/> |
|
|
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="to_unfold_p⊆({Mdl} ⩤ ports)(Pat)"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pat∈dom(p_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="inst_components∼;container(Mdl);inst_components⊆container(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="p_multiplicity∈Pattern → (Port ⇸ ℕ)"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/> |
|
|
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="to_unfold_p⊆ports(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="inst_components∈components(Pat) ⤔ components(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="new_ports[OPort]⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="Pat=Mdl"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Mdl∈dom(container)"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pat∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="(c_multiplicity(Pat))[components(Pat)]⊆{1}"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈dom(components)"/> |
|
|
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="(container(Mdl))∼;inst_components∼;container(Mdl)⊆inst_components∼"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="(container(Mdl))∼;inst_components∼;container(Pat)⊆inst_components∼"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/> |
|
|
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="dom(inst_ports)⊆dom(p_component(Pat) ▷ dom(inst_components))"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_clone_c∈components(Pat) ⇸ components(Pat)"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst_props∈Property ⇸ Property"/> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst_ports∼;p_component(Pat);inst_components⊆p_component(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_free_c⊆components(Pat)"/> |
|
|
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="ports{Mdl ↦ ports(Mdl)∪ran(new_ports)}∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="new_ports∈ports(Mdl) ∖ dom(inst_ports) ↣ Port ∖ union(ran(ports))"/> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="inst_ports[IPort]⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="Mdl∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="inst_components∼;container(Pat);inst_components⊆container(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="Mdl∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀m⦂Model·p_component(m)∈ports(m) → components(m)"/> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="components∈Model → ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="new_ports[IPort]⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="new_components∈components(Mdl) ∖ dom(inst_components) ↣ Component ∖ union(ran(components))"/> |
|
|
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="to_unfold_p⊆ports(Mdl)∪ran(new_ports)"/> |
|
|
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="inst_ports∈ports(Mdl) ⤔ ports(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀m⦂Model·finite(ports(m))"/> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="(p_multiplicity(Mdl))[ports(Mdl)]⊆{1}"/> |
|
|
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="new_ports∈ports(Pat) ∖ dom(inst_ports) ↣ Port ∖ union(ran(ports))"/> |
|
|
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="new_components∈components(Pat) ∖ dom(inst_components) ↣ Component ∖ union(ran(components))"/> |
|
|
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="(c_multiplicity(Mdl))[components(Mdl)]⊆{1}"/> |
|
|
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="¬Pat=Mdl"/> |
|
|
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_p⊆(ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(Pat)"/> |
|
|
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="to_unfold_p⊆ports(Pat)"/> |
|
|
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="inst_ports[OPort]⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="inst_ports∼;p_component(Mdl);inst_components⊆p_component(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="inst_ports∈ports(Pat) ⤔ ports(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/> |
|
|
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="Pat∈dom(components)"/> |
|
|
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="Pat∈dom(container)"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="apply_pattern/sp/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p4,p5"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤∧⊤"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Mdl∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Mdl∈dom(ports)∧ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_c/new_c_ports_ty/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7,p8"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p7,p8"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p5"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p9" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p17"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p18"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p4"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p20" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p21" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p22"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p4"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pat∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="¬Mdl=Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Mdl∈Model"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈Model"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="⊤∧⊤∧⊤∧⊤∧Pat∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Mdl≠Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Pat∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧c∈dom(c_multiplicity(Pat))∧c_multiplicity(Pat)∈Component ⇸ ℤ∧Pat∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_c/pc_ty/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1,p2"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p1,p2"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Mdl∈Model"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬Mdl=Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Mdl≠Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_c/pc_ctr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6,p7"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p6,p7"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p12"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p15"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Pat" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p15"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p1,p2,p5,p6,p7,p15"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p18"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p1,p2,p5,p6,p7,p18"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m⦂Model·p_component(m)∈ports(m) → components(m)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈to_unfold_c"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="p_component(m)∈ports(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·p_component(m)∈ports(m) → (components{Pat ↦ components(Pat)∪ran(new_c)})(m)"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="p_component(m)∈ports(m) → (components{Pat ↦ components(Pat)∪ran(new_c)})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="p_component(Pat)∈ports(Pat) → components(Pat)∪ran(new_c)"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="p_component(m)∈ports(m) → components(Pat)∪ran(new_c)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="p_component(m)∈ports(m) → ({Pat} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬m=Pat"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="m=Pat"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_c/to_unfold_p/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3,p4"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p3,p4"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="new_c_ports" org.eventb.core.type="ℙ(ℤ×Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Mdl=Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_p∪new_c_ports[1 ‥ c_multiplicity(Pat)(c) × dom(p_multiplicity(Pat))]⊆ports(Pat)"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Mdl∈Model"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="new_c_ports[1 ‥ c_multiplicity(Pat)(c) × dom(p_multiplicity(Pat))]⊆ports(Pat)"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_p⊆ports(Pat)"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="⊤∧new_c_ports[1 ‥ c_multiplicity(Pat)(c) × dom(p_multiplicity(Pat))]⊆ports(Pat)"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Mdl≠Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_p⊆ports(Pat)∧new_c_ports[1 ‥ c_multiplicity(Pat)(c) × dom(p_multiplicity(Pat))]⊆ports(Pat)"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_c/new_p_component/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p4,p5"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤∧⊤"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬Mdl=Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Mdl≠Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pat∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_c/unfold_p/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8,p9"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p8,p9"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p3,p4,p6"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p10" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p16"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p18"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p5"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p1" org.eventb.core.prHyps="p1"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p21"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p5"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="p_multiplicity∈Pattern → (Port ⇸ ℕ1)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬Mdl=Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="⊤∧⊤∧⊤∧⊤∧Pat∈dom(p_multiplicity)∧p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈dom(p_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Mdl∈Model"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈dom(c_multiplicity(Pat))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧c∈dom(c_multiplicity(Pat))∧c_multiplicity(Pat)∈Component ⇸ ℤ∧Pat∈dom(p_multiplicity)∧p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Mdl≠Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Pat∈dom(p_multiplicity)∧p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Pattern"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="instanciate_pattern/card/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="pp" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3,p4"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p3,p4"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees pp)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13"> |
|
|
<org.eventb.core.prIdent name="pp" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p14"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p17" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p19"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p1"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p20"/> |
|
|
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p21"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional image goal for p_multiplicity(Pat)" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p22"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p22"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p23"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="inst_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="p_multiplicity(Pat)∈Port ⇸ ℕ1"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="finite(inst_ports[{pp}])"> |
|
|
<org.eventb.core.prIdent name="pp" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="p_multiplicity(Pat)∈Port ⇸ ℤ"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Mdl=Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="pp∈dom(p_multiplicity(Pat))"> |
|
|
<org.eventb.core.prIdent name="pp" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="pp∈dom(inst_ports)⇒Pat∈dom(p_multiplicity)∧p_multiplicity∈Model ⇸ ℙ(Port × ℤ)∧pp∈dom(p_multiplicity(Pat))∧p_multiplicity(Pat)∈Port ⇸ ℤ∧finite(inst_ports[{pp}])"> |
|
|
<org.eventb.core.prIdent name="pp" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pat∈dom(p_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Mdl∈Model"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Pat∈Model"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀pp⦂Port·pp∈dom(inst_ports)⇒Pat∈dom(p_multiplicity)∧p_multiplicity∈Model ⇸ ℙ(Port × ℤ)∧pp∈dom(p_multiplicity(Pat))∧p_multiplicity(Pat)∈Port ⇸ ℤ∧finite(inst_ports[{pp}])"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="pp∈dom(inst_ports)"> |
|
|
<org.eventb.core.prIdent name="pp" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Mdl≠Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="p_multiplicity∈Model → (Port ⇸ ℕ1)"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pat∈dom(p_multiplicity)∧p_multiplicity∈Model ⇸ ℙ(Port × ℤ)∧pp∈dom(p_multiplicity(Pat))∧p_multiplicity(Pat)∈Port ⇸ ℤ∧finite(inst_ports[{pp}])"> |
|
|
<org.eventb.core.prIdent name="pp" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.funImgGoal"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="apply_pattern/ip/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5,p6"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p5,p6"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p7" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p15"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p17" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Mdl∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst∈dom(ports)∧ports∈Model ⇸ ℙ(Port)∧Mdl∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Inst≠Mdl"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈Model"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="⊤∧⊤∧Mdl∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬Inst=Mdl"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="apply_pattern/ports_inst_rel_comp_inst/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p4,p5"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤∧⊤"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="apply_pattern/ports_inst_rel_port_comp/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5,p6"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p5,p6"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p7" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p15"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p17" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Inst≠Mdl"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)∧Mdl∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈Model"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="⊤∧⊤∧Mdl∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬Inst=Mdl"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Mdl∈dom(p_component)"/> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="apply_pattern/pc_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="ae" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12" org.eventb.core.prSets="Component,Model,Port" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14,p15"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p14,p15"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p22"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p23"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))∈Port ⇸ Component)" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p5,p2,p12"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p25"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p25" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p5,p12,p2"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p1,p2,p28,p4,p5,p8,p29,p30,p31,p32,p11,p33,p3,p34,p7,p35,p14,p15,p10,p36,p37,p38,p12"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Mdl)" org.eventb.core.prHyps="p6"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p39"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p6"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Inst)" org.eventb.core.prHyps="p6"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p40"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p6"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p4"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p9"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p8"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p10"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p7"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p3"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites converse relation in goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="; with ∪ distribution in goal" org.eventb.core.prGoal="p41" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p42" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="; with ∪ distribution in goal" org.eventb.core.prGoal="p43" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p44" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (p_component(Mdl)∪(inst_ports∼;p_component(Inst);inst_components)=p_component(Mdl))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p5,p2,p12"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p25"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p25" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p5,p12,p2"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p46" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p3"> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p3" org.eventb.core.prHyps="p3"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p2,p5,p46,p12"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p46" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (p_component(Mdl)∪(inst_ports∼;p_component(Inst);inst_components)=p_component(Mdl))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p5,p2,p12"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p25"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p25" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p5,p12,p2"> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p46" org.eventb.core.prHyps="p46"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p2,p5,p46,p12"> |
|
|
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with p_component(Mdl)∪(inst_ports∼;p_component(Inst);inst_components)=p_component(Mdl)" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p46"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p47"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p11"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p46" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3"/> |
|
|
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p47" org.eventb.core.prHyps="p1,p2,p4,p5,p8,p11,p40,p3,p7,p39,p9,p10,p12"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/> |
|
|
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p46"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p46"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1.2"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p27,p2,p5,p12"> |
|
|
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ae (p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components)))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p5,p2,p12"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p25"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p25" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p48,p2,p5,p12"> |
|
|
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with ae=p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p48"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p50"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p27" org.eventb.core.prInfHyps="p49"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p27"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p48"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p1,p2,p28,p4,p5,p29,p30,p31,p32,p11,p33,p3,p34,p7,p35,p14,p15,p10,p36,p37,p38"/> |
|
|
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p50" org.eventb.core.prHyps="p49,p8,p12"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/> |
|
|
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e2"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p27"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="new_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="(container(Inst))[dom(inst_components)]⊂dom(inst_components)"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="(p_multiplicity(Inst))[ports(Pat)]⊆{1}"> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="p_component(Mdl)∪((inst_ports∼;p_component(Inst);inst_components)∪(inst_ports∼;p_component(Inst);new_components))∪(new_ports∼;p_component(Inst);(inst_components∪new_components))∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="(container(Mdl))∼;inst_components∼;container(Inst)⊆inst_components∼"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="p_component(Mdl)∪(inst_ports∼;p_component(Inst);new_components)∪(new_ports∼;p_component(Inst);(inst_components∪new_components))∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="new_ports[OPort]⊆OPort"> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="p_component(Mdl)∪(inst_ports∼;p_component(Inst);inst_components)∪(inst_ports∼;p_component(Inst);new_components)∪(new_ports∼;p_component(Inst);(inst_components∪new_components))∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="p_component(Mdl)∪(inst_ports∼;p_component(Inst);inst_components)=p_component(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="Mdl∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)∧Inst∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="ae=p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))"> |
|
|
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="dom(inst_components) ◁ container(Inst);inst_components⊂inst_components;container(Mdl)"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="inst_props∈Property ⇸ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="inst_props" org.eventb.core.type="ℙ(Property×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(inst_ports)⊆dom(p_component(Inst) ▷ dom(inst_components))"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="inst_ports∼;p_component(Inst);inst_components⊆p_component(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="p_component(Mdl)∪((inst_ports∼;p_component(Inst);(inst_components∪new_components))∪(new_ports∼;p_component(Inst);(inst_components∪new_components)))∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="inst_ports[IPort]⊆IPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="inst_components∈components(Inst) ⤔ components(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬Inst=Mdl"/> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="p_component(Mdl)∪((inst_ports∼∪new_ports∼);p_component(Inst);(inst_components∪new_components))∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Mdl∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="inst_ports∈ports(Inst) ⤔ ports(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·p_component(m)∈ports(m) → components(m)"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="new_ports[IPort]⊆IPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="p_component{Mdl ↦ p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))}∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="(container(Pat))∼;inst_components;container(Inst)⊆inst_components"> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="p_component(Mdl)∈ports(Mdl) → components(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="p_component{Mdl ↦ ae}∈Model → (Port ⇸ Component)"> |
|
|
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="p_component(Mdl)∪(inst_ports∼;p_component(Inst);(inst_components∪new_components))∪(new_ports∼;p_component(Inst);(inst_components∪new_components))∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="inst_components∼;container(Inst);inst_components⊆container(Mdl)"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="new_ports∈ports(Inst) ∖ dom(inst_ports) ↣ Port ∖ union(ran(ports))"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Inst≠Mdl"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="p_component(Inst)∈ports(Inst) → components(Inst)"/> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="new_components∈components(Inst) ∖ dom(inst_components) ↣ Component ∖ union(ran(components))"/> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="⊤∧⊤∧⊤"/> |
|
|
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="ae∈Port ⇸ Component"> |
|
|
<org.eventb.core.prIdent name="ae" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="inst_ports[OPort]⊆OPort"> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="Mdl"/> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Inst"/> |
|
|
<org.eventb.core.prExpr name="e2" org.eventb.core.expression="p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.convRewrites"/> |
|
|
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.ae"/> |
|
|
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/> |
|
|
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.compUnionDistRewrites"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="apply_pattern/c/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5,p6"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p5,p6"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p7" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p10" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Inst∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="⊤∧⊤∧⊤"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Inst≠Mdl"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Mdl∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)∧Inst∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬Inst=Mdl"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Mdl∈dom(p_component)"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="apply_pattern/unfold_p_done/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Model,Port" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5,p6"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p5,p6"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p7" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p15"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18"/> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p19"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p1"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Inst∈dom(p_multiplicity)∧p_multiplicity∈Model ⇸ ℙ(Port × ℤ)∧Pat∈dom(ports)∧ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Inst∈dom(p_multiplicity)∧p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Inst∈dom(p_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Inst∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="p_multiplicity∈Pattern → (Port ⇸ ℕ)"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Inst∈dom(p_multiplicity)∧p_multiplicity∈Model ⇸ ℙ(Port × ℤ)∧⊤∧⊤"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Pattern"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_c/pmult/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1,p2"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p1,p2"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Mdl∈Model"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬Mdl=Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Mdl≠Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_c/new_p_mult/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p4,p5"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p12"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p1" org.eventb.core.prHyps="p1"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p15"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p2"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="p_multiplicity∈Pattern → (Port ⇸ ℕ1)"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Mdl=Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈dom(p_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Mdl∈Model"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Mdl≠Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(p_multiplicity)∧p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Pattern"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="clone_c/cloned_p_ty/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5,p6"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p5,p6"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p7" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p13"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p16" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p18"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p2"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)∧c∈dom(to_clone_c)∧to_clone_c∈Component ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pat∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)∧⊤∧⊤"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pat∈Model"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈dom(to_clone_c)"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pat∈dom(p_component)"/> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="clone_c/p/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1,p2"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p1,p2"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p7"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="clone_c/p_ctr/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="m1,m2" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7,p8"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p7,p8"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p13"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m1,m2)" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p16"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p18"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p19" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p20"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p21" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m1=Pat" org.eventb.core.prHyps="p18"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p24"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p16"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p25"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p26"/> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p26"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p27"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m1=Pat" org.eventb.core.prHyps="p18"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p24"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p16"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p25"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p26"/> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p26"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p28"> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p30"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m1=Pat" org.eventb.core.prHyps="p18"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p24"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p16"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p31"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p31"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p32"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p33" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p20"> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35"/> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p28"> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37"> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38"> |
|
|
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p2,p6,p1,p7,p8,p11,p16,p32,p28"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="cloned_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="cloned_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬m2=Pat"> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="ports(m1)∩(ports(Pat)∪ran(cloned_p))=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬m1=Pat"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="(ports(Pat)∪ran(cloned_p))∩(ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="cloned_c∈(container(Pat))∼[{to_clone_c(c)}] ↣ Component ∖ union(ran(components))"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="(ports(Pat)∪ran(cloned_p))∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒(ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(m1)∩(ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬m1=m2⇒(ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(m1)∩(ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="¬⊥"/> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="({Pat} ⩤ ports)(m1)∩({Pat} ⩤ ports)(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="cloned_p=(∅ ⦂ ℙ(Port×Port))"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒(ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(m1)∩(ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="ports(Pat)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="ports(Pat)=(∅ ⦂ ℙ(Port))∧cloned_p=(∅ ⦂ ℙ(Port×Port))"/> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬Pat=m2"> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="(ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(m1)∩(ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="⊥"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬m1=m2"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="m2=Pat"> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="({Pat} ⩤ ports)(m1)∩(ports(Pat)∪ran(cloned_p))=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="cloned_p∈(p_component(Pat))∼[{to_clone_c(c)}] ↣ Port ∖ union(ran(ports))"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈dom(to_clone_c)"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="(ports(Pat)∪ran(cloned_p))∩(ports(Pat)∪ran(cloned_p))=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="(ports(Pat)∪ran(cloned_p))∩({Pat} ⩤ ports)(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="ports(m1)∩({Pat} ⩤ ports)(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="({Pat} ⩤ ports)(m1)∩(ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="m1=Pat"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬⊤"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/> |
|
|
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="clone_c/pc_ty/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1,p2"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p1,p2"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p7"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="clone_c/pc_ctr/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5,p6"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p5,p6"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p14"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p14"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p14"/> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p18"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p21"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p22"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p22"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p18"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p23" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p14"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p25"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p21"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p22"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p22"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p18"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p21"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p22"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p22"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p18"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p29" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p14"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p30" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p14"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p22"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p22"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p18"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p22"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p22"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p18"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p36" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p14"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p22"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p22"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p18"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43"/> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="cloned_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="cloned_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="p_component(Pat)∪(ran(cloned_p) × {c})∈(ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(m) → (components{Pat ↦ components(Pat)∪ran(cloned_c)})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="({Pat} ⩤ p_component)(m)∈({Pat} ⩤ ports)(m) → ({Pat} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="p_component(m)∈ports(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="components∈Model → ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="({Pat} ⩤ p_component)(m)∈({Pat} ⩤ ports)(m) → (components{Pat ↦ components(Pat)∪ran(cloned_c)})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="p_component(m)∈ports(Pat)∪ran(cloned_p) → components(Pat)∪ran(cloned_c)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="p_component(Pat)∪(ran(cloned_p) × {c})∈({Pat} ⩤ ports)(m) → (components{Pat ↦ components(Pat)∪ran(cloned_c)})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="p_component(Pat)∪(ran(cloned_p) × {c})∈({Pat} ⩤ ports)(m) → ({Pat} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="p_component(m)∈ports(m) → components(Pat)∪ran(cloned_c)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="({Pat} ⩤ p_component)(m)∈ports(Pat)∪ran(cloned_p) → (components{Pat ↦ components(Pat)∪ran(cloned_c)})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="p_component(m)∈({Pat} ⩤ ports)(m) → components(Pat)∪ran(cloned_c)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="({Pat} ⩤ p_component)(m)∈ports(Pat)∪ran(cloned_p) → components(Pat)∪ran(cloned_c)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="p_component(Pat)∪(ran(cloned_p) × {c})∈ports(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="p_component(Pat)∪(ran(cloned_p) × {c})∈({Pat} ⩤ ports)(m) → components(Pat)∪ran(cloned_c)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="({Pat} ⩤ p_component)(m)∈(ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(m) → (components{Pat ↦ components(Pat)∪ran(cloned_c)})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="p_component(m)∈ports(Pat)∪ran(cloned_p) → ({Pat} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="⊥"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·(p_component{Pat ↦ p_component(Pat)∪(ran(cloned_p) × {c})})(m)∈(ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(m) → (components{Pat ↦ components(Pat)∪ran(cloned_c)})(m)"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="p_component(Pat)∪(ran(cloned_p) × {c})∈ports(m) → components(Pat)∪ran(cloned_c)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="p_component(m)∈({Pat} ⩤ ports)(m) → ({Pat} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="p_component(Pat)∪(ran(cloned_p) × {c})∈ports(Pat)∪ran(cloned_p) → ({Pat} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="(p_component{Pat ↦ p_component(Pat)∪(ran(cloned_p) × {c})})(m)∈(ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(m) → (components{Pat ↦ components(Pat)∪ran(cloned_c)})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="p_component(Pat)∪(ran(cloned_p) × {c})∈ports(Pat)∪ran(cloned_p) → components(Pat)∪ran(cloned_c)"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="p_component(Pat)∪(ran(cloned_p) × {c})∈ports(Pat)∪ran(cloned_p) → (components{Pat ↦ components(Pat)∪ran(cloned_c)})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="p_component(Pat)∪(ran(cloned_p) × {c})∈ports(m) → ({Pat} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="p_component(Pat)∪(ran(cloned_p) × {c})∈ports(Pat)∪ran(cloned_p) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="({Pat} ⩤ p_component)(m)∈ports(Pat)∪ran(cloned_p) → ({Pat} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="({Pat} ⩤ p_component)(m)∈({Pat} ⩤ ports)(m) → components(Pat)∪ran(cloned_c)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="p_component(m)∈ports(Pat)∪ran(cloned_p) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="p_component(m)∈ports(m) → ({Pat} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬m=Pat"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="m=Pat"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬⊤"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="clone_c/pmult/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1,p2"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p1,p2"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p7"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="clone_c/to_unfold_p/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6,p7"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p6,p7"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p13"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p4,p2,p5,p1,p6,p7"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="cloned_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="cloned_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="cloned_c∈(container(Pat))∼[{to_clone_c(c)}] ↣ Component ∖ union(ran(components))"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="cloned_p∈(p_component(Pat))∼[{to_clone_c(c)}] ↣ Port ∖ union(ran(ports))"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈dom(to_clone_c)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="to_unfold_p⊆ports(Pat)"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_p∪ran(cloned_p)⊆(ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(Pat)"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_p⊆ports(Pat)∪ran(cloned_p)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="clone_c/cloned_p/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p4,p5"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤∧⊤"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pat∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="clone_c/source_p/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p4,p5"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤∧⊤"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(ports)∧ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pat∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="clone_c/p_mult/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p4,p5"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p10"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p1" org.eventb.core.prHyps="p1"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p13"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p2"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈dom(p_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="p_multiplicity∈Pattern → (Port ⇸ ℕ)"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(p_multiplicity)∧p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Pattern"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="free_c/pc_ctr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7,p8"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p7,p8"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p13"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p16"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p16"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p16"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p1,p4,p7,p8,p16"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p20"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p23"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p24"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p24"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p20"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p25" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p16"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p5"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p23"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p24"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p24"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p20"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p5"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p30"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p23"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p24"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p24"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p20"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p31" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p16"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p32" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p16"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p24"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p24"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p20"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p24"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p24"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p38" org.eventb.core.prHyps="p20"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p38" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p16"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p40"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p40" org.eventb.core.prHyps="p5"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p41"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="p20" org.eventb.core.prInfHyps="p24"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p24"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p20"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p42" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p43"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p43" org.eventb.core.prHyps="p5"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p44"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p44" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p45"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p45" org.eventb.core.prHyps="p1,p4,p7,p8,p20"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·(p_component{Pat ↦ p_component(Pat) ⩥ {c}})(m)∈(ports{Pat ↦ ports(Pat) ∖ (p_component(Pat))∼[{c}]})(m) → (components{Pat ↦ components(Pat) ∖ {c}})(m)"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m⦂Model·p_component(m)∈ports(m) → components(m)"/> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="p_component(m)∈ports(Pat) ∖ (p_component(Pat))∼[{c}] → ({Pat} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="p_component(Pat) ⩥ {c}∈ports(m) → ({Pat} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="({Pat} ⩤ p_component)(m)∈({Pat} ⩤ ports)(m) → components(Pat) ∖ {c}"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="({Pat} ⩤ p_component)(m)∈({Pat} ⩤ ports)(m) → ({Pat} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="p_component(m)∈ports(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="p_component(m)∈ports(Pat) ∖ (p_component(Pat))∼[{c}] → components(Pat) ∖ {c}"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="p_component(Pat) ⩥ {c}∈ports(m) → components(Pat) ∖ {c}"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="({Pat} ⩤ p_component)(m)∈({Pat} ⩤ ports)(m) → (components{Pat ↦ components(Pat) ∖ {c}})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="p_component(Pat) ⩥ {c}∈ports(Pat) ∖ (p_component(Pat))∼[{c}] → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="p_component(Pat) ⩥ {c}∈({Pat} ⩤ ports)(m) → ({Pat} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="p_component(Pat) ⩥ {c}∈(ports{Pat ↦ ports(Pat) ∖ (p_component(Pat))∼[{c}]})(m) → (components{Pat ↦ components(Pat) ∖ {c}})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="({Pat} ⩤ p_component)(m)∈ports(Pat) ∖ (p_component(Pat))∼[{c}] → components(Pat) ∖ {c}"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="(p_component{Pat ↦ p_component(Pat) ⩥ {c}})(m)∈(ports{Pat ↦ ports(Pat) ∖ (p_component(Pat))∼[{c}]})(m) → (components{Pat ↦ components(Pat) ∖ {c}})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="c∈to_free_c ∖ ran(to_clone_c)"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="p_component(Pat) ⩥ {c}∈ports(Pat) ∖ (p_component(Pat))∼[{c}] → components(Pat) ∖ {c}"/> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="p_component(m)∈({Pat} ⩤ ports)(m) → components(Pat) ∖ {c}"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="({Pat} ⩤ p_component)(m)∈(ports{Pat ↦ ports(Pat) ∖ (p_component(Pat))∼[{c}]})(m) → (components{Pat ↦ components(Pat) ∖ {c}})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="⊥"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="p_component(m)∈({Pat} ⩤ ports)(m) → ({Pat} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="p_component(m)∈ports(Pat) ∖ (p_component(Pat))∼[{c}] → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="p_component(m)∈ports(m) → components(Pat) ∖ {c}"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="p_component(Pat) ⩥ {c}∈({Pat} ⩤ ports)(m) → (components{Pat ↦ components(Pat) ∖ {c}})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="({Pat} ⩤ p_component)(m)∈ports(Pat) ∖ (p_component(Pat))∼[{c}] → (components{Pat ↦ components(Pat) ∖ {c}})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="p_component(Pat) ⩥ {c}∈ports(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="p_component(Pat) ⩥ {c}∈ports(Pat) ∖ (p_component(Pat))∼[{c}] → (components{Pat ↦ components(Pat) ∖ {c}})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="({Pat} ⩤ p_component)(m)∈ports(Pat) ∖ (p_component(Pat))∼[{c}] → ({Pat} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="p_component(Pat) ⩥ {c}∈ports(Pat) ∖ (p_component(Pat))∼[{c}] → ({Pat} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="p_component(m)∈ports(m) → ({Pat} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬m=Pat"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="p_component(Pat) ⩥ {c}∈({Pat} ⩤ ports)(m) → components(Pat) ∖ {c}"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="m=Pat"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="¬⊤"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_p/p_ty/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3,p4"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p3,p4"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p14" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p16"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p1"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Mdl=Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Mdl∈Model"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈Model"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Mdl≠Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pat∈dom(p_component)"/> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="mult_cstr/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p4,p5"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p12"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p13"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p15"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p15"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p18"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p1"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p19"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p20" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p21" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p22"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p2"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="m∈dom(p_multiplicity)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="m∈dom(p_multiplicity)∧p_multiplicity∈Model ⇸ ℙ(Port × ℤ)∧m∈dom(ports)∧ports∈Model ⇸ ℙ(Port)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="m∈Model"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="m∈Pattern"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="m∈Pattern⇒m∈dom(p_multiplicity)∧p_multiplicity∈Model ⇸ ℙ(Port × ℤ)∧m∈dom(ports)∧ports∈Model ⇸ ℙ(Port)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒m∈dom(p_multiplicity)∧p_multiplicity∈Model ⇸ ℙ(Port × ℤ)∧m∈dom(ports)∧ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="p_multiplicity∈Pattern → (Port ⇸ ℕ)"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="m∈dom(ports)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Pattern"/> |
|
|
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="Model"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="apply_pattern/mult_cstr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17" org.eventb.core.prSets="Component,Model,Port,Property" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p18,p19"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p18,p19"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p23"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p25"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p26"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p28" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p29"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p30" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p31"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Mdl" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p31"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p33"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p29"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p14"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p1,p2,p3,p4,p6,p7,p8,p9,p33,p10,p11,p31,p12,p18,p19,p14,p15,p16,p17"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p35"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p13"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37"> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst m)" org.eventb.core.prHyps="p6"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p38"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p6"/> |
|
|
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p38" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p29"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p6"/> |
|
|
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p29"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p37"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p6"/> |
|
|
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p37"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="inst_props" org.eventb.core.type="ℙ(Property×Property)"/> |
|
|
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="new_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="p_multiplicity(m)∈(ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="(container(Inst))[dom(inst_components)]⊆dom(inst_components)"/> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="inst_ports∈ports(Inst) ⤔ ports(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒p_multiplicity(m)∈(ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(m) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_ports[IPort]⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒p_multiplicity(m)∈ports(m) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="m∈Pattern⇒p_multiplicity(m)∈(ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="¬m=Mdl"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="p_multiplicity(Mdl)∈ports(Mdl)∪ran(new_ports) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="p_multiplicity(m)∈ports(Mdl)∪ran(new_ports) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="new_ports[OPort]⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="new_ports∈ports(Inst) ∖ dom(inst_ports) ↣ Port ∖ union(ran(ports))"/> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Inst≠Mdl"/> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="m∈Pattern"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="inst_props∈Property ⇸ Property"/> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="p_multiplicity(m)∈ports(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="dom(inst_ports)⊆dom(p_component(Inst) ▷ dom(inst_components))"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="inst_ports∼;p_component(Inst);inst_components⊆p_component(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Mdl∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="new_components∈components(Inst) ∖ dom(inst_components) ↣ Component ∖ union(ran(components))"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="dom(inst_components) ◁ container(Inst);inst_components⊆inst_components;container(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="m=Mdl"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="inst_ports[IPort]⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="inst_components∈components(Inst) ⤔ components(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="inst_ports[OPort]⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬Inst=Mdl"/> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="p_multiplicity(m)∈({Mdl} ⩤ ports)(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="m"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prExpr> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/> |
|
|
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_c/mult_cstr/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3,p4"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p3,p4"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p14"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p16"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Pat" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p16"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p14"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p18"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p20"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22"/> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="new_c_ports" org.eventb.core.type="ℙ(ℤ×Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="p_multiplicity(Pat)∪(new_c_ports∼;(prj2 ⦂ ℙ(ℤ×Port×Port));p_multiplicity(Pat))∈ports(Pat) → ℕ1"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="m∈Pattern⇒(p_multiplicity{Pat ↦ p_multiplicity(Pat)∪(new_c_ports∼;(prj2 ⦂ ℙ(ℤ×Port×Port));p_multiplicity(Pat))})(m)∈ports(m) → ℕ1"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒(p_multiplicity{Pat ↦ p_multiplicity(Pat)∪(new_c_ports∼;(prj2 ⦂ ℙ(ℤ×Port×Port));p_multiplicity(Pat))})(m)∈ports(m) → ℕ1"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="p_multiplicity∈Pattern → (Port ⇸ ℕ1)"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="m∈Pattern"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Mdl=Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="p_multiplicity(Pat)∪(new_c_ports∼;(prj2 ⦂ ℙ(ℤ×Port×Port));p_multiplicity(Pat))∈ports(m) → ℕ1"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="p_multiplicity(m)∈ports(m) → ℕ1"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Mdl∈Model"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="(p_multiplicity{Pat ↦ p_multiplicity(Pat)∪(new_c_ports∼;(prj2 ⦂ ℙ(ℤ×Port×Port));p_multiplicity(Pat))})(m)∈ports(m) → ℕ1"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="({Pat} ⩤ p_multiplicity)(m)∈ports(m) → ℕ1"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Mdl≠Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬m=Pat"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="m=Pat"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="clone_c/mult_cstr/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p4,p5"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p10"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p13"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p15"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p15"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Pat" org.eventb.core.prHyps="p15"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p13"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p18"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p19"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="p15" org.eventb.core.prInfHyps="p22"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p23"/> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p23"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p19"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p15"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="p19" org.eventb.core.prInfHyps="p23"/> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p23"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p19"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p28" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29"/> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="cloned_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒(p_multiplicity{Pat ↦ p_multiplicity(Pat)∪(cloned_p∼;p_multiplicity(Pat))})(m)∈(ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(m) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="({Pat} ⩤ p_multiplicity)(m)∈ports(Pat)∪ran(cloned_p) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="p_multiplicity(Pat)∪(cloned_p∼;p_multiplicity(Pat))∈({Pat} ⩤ ports)(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="p_multiplicity∈Pattern → (Port ⇸ ℕ)"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="p_multiplicity(Pat)∪(cloned_p∼;p_multiplicity(Pat))∈(ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="p_multiplicity(m)∈({Pat} ⩤ ports)(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="⊥"/> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="({Pat} ⩤ p_multiplicity)(m)∈({Pat} ⩤ ports)(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="m∈Pattern"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="p_multiplicity(Pat)∪(cloned_p∼;p_multiplicity(Pat))∈ports(Pat)∪ran(cloned_p) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="(p_multiplicity{Pat ↦ p_multiplicity(Pat)∪(cloned_p∼;p_multiplicity(Pat))})(m)∈(ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="({Pat} ⩤ p_multiplicity)(m)∈(ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="p_multiplicity(m)∈ports(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="p_multiplicity(m)∈ports(Pat)∪ran(cloned_p) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="p_multiplicity(Pat)∪(cloned_p∼;p_multiplicity(Pat))∈ports(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬m=Pat"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="m∈Pattern⇒(p_multiplicity{Pat ↦ p_multiplicity(Pat)∪(cloned_p∼;p_multiplicity(Pat))})(m)∈(ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="m=Pat"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬⊤"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/> |
|
|
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_p/mult_cstr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Model,Port" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5,p6"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p5,p6"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p13"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p16"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p20"/> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p21"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Inst" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p21"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p16" org.eventb.core.prInfHyps="p23"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p16"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst Inst)" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p25"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p25" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p23"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p23"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p26"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p21,p23,p27,p28,p5,p6"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p29"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p3"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p23"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p1,p26,p30,p29,p31"/> |
|
|
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p3,p23"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p32"> |
|
|
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst m)" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p25"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p25" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p16"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p16"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p34"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p2"/> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p34"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="new_p" org.eventb.core.type="ℙ(ℤ×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒p_multiplicity(m)∈ports(m) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="p_multiplicity(m)∈(ports{Inst ↦ ports(Inst)∪ran(new_p)})(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="p_multiplicity(Inst)∈ports(Inst) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="p ↦ c∈to_unfold_p_in"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="p_multiplicity(Inst)∈ports(Inst)∪ran(new_p) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="¬m=Inst"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="p_multiplicity(m)∈({Inst} ⩤ ports)(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="m∈Pattern"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="p∈IPort⇒ran(new_p)⊆IPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒p_multiplicity(m)∈(ports{Inst ↦ ports(Inst)∪ran(new_p)})(m) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬Mdl=Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="new_p∈1 ‥ p_multiplicity(Pat)(p) ↣ Port ∖ union(ran(ports))"> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="p_multiplicity(m)∈ports(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Mdl∈Model"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Inst∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="p∈OPort⇒ran(new_p)⊆OPort"> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="m=Inst"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="p_multiplicity(m)∈ports(Inst)∪ran(new_p) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Mdl≠Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="m∈Pattern⇒p_multiplicity(m)∈(ports{Inst ↦ ports(Inst)∪ran(new_p)})(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_p_in∈ports(Pat) ↔ components(Inst)"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Inst"/> |
|
|
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="m"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prExpr> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/> |
|
|
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/> |
|
|
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> |
|
|
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="free_c/p/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1,p2"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p1,p2"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p7"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="free_c/p_ctr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m1,m2" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5,p6"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p5,p6"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m1,m2)" org.eventb.core.prGoal="p10" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p14"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p16"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p18"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p19" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m1=Pat" org.eventb.core.prHyps="p16"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p21"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p14"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="p18" org.eventb.core.prInfHyps="p22"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p23"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p23"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p24"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p26" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p27"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m1=Pat" org.eventb.core.prHyps="p16"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p21"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p14"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p28"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p28"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p1,p5,p6,p9,p16,p24"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p29"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p30" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p18"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p32" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33"> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p1,p5,p6,p9,p14,p29,p18"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p24"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p35"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36"> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p1,p5,p6,p9,p14,p29,p24"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="¬m2=Pat"> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬m1=Pat"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="({Pat} ⩤ ports)(m1)∩(ports(Pat) ∖ (p_component(Pat))∼[{c}])=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒(ports{Pat ↦ ports(Pat) ∖ (p_component(Pat))∼[{c}]})(m1)∩(ports{Pat ↦ ports(Pat) ∖ (p_component(Pat))∼[{c}]})(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="ports(Pat)⊆(p_component(Pat))∼[{c}]"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬m1=m2⇒(ports{Pat ↦ ports(Pat) ∖ (p_component(Pat))∼[{c}]})(m1)∩(ports{Pat ↦ ports(Pat) ∖ (p_component(Pat))∼[{c}]})(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="¬⊥"/> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="ports(Pat)∩ports(m2)⊆(p_component(Pat))∼[{c}]"> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="({Pat} ⩤ ports)(m1)∩({Pat} ⩤ ports)(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="(ports(Pat) ∖ (p_component(Pat))∼[{c}])∩(ports{Pat ↦ ports(Pat) ∖ (p_component(Pat))∼[{c}]})(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="({Pat} ⩤ ports)(m1)∩(ports{Pat ↦ ports(Pat) ∖ (p_component(Pat))∼[{c}]})(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="ports(m1)∩(ports(Pat) ∖ (p_component(Pat))∼[{c}])=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="(ports(Pat) ∖ (p_component(Pat))∼[{c}])∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c∈to_free_c ∖ ran(to_clone_c)"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒(ports{Pat ↦ ports(Pat) ∖ (p_component(Pat))∼[{c}]})(m1)∩(ports{Pat ↦ ports(Pat) ∖ (p_component(Pat))∼[{c}]})(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="(ports(Pat) ∖ (p_component(Pat))∼[{c}])∩({Pat} ⩤ ports)(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬Pat=m2"> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="⊥"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="(ports{Pat ↦ ports(Pat) ∖ (p_component(Pat))∼[{c}]})(m1)∩(ports{Pat ↦ ports(Pat) ∖ (p_component(Pat))∼[{c}]})(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬m1=m2"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="m2=Pat"> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="ports(m1)∩ports(Pat)⊆(p_component(Pat))∼[{c}]"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="(ports(Pat) ∖ (p_component(Pat))∼[{c}])∩(ports(Pat) ∖ (p_component(Pat))∼[{c}])=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="ports(m1)∩({Pat} ⩤ ports)(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="m2" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="m1=Pat"> |
|
|
<org.eventb.core.prIdent name="m1" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬⊤"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="free_c/mult_cstr/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5,p6"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p5,p6"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p14"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p16"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Pat" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p16"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p14"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p18"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p20"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p4,p1,p5,p6,p14,p20"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="p_multiplicity(m)∈(ports{Pat ↦ ports(Pat) ∖ (p_component(Pat))∼[{c}]})(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="p_multiplicity(m)∈({Pat} ⩤ ports)(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="m∈Pattern"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒p_multiplicity(m)∈(ports{Pat ↦ ports(Pat) ∖ (p_component(Pat))∼[{c}]})(m) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒p_multiplicity(m)∈ports(m) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="m∈Pattern⇒p_multiplicity(m)∈(ports{Pat ↦ ports(Pat) ∖ (p_component(Pat))∼[{c}]})(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="p_multiplicity(Pat)∈ports(Pat) ∖ (p_component(Pat))∼[{c}] → ℕ"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="p_multiplicity(m)∈ports(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c∈to_free_c ∖ ran(to_clone_c)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="p_multiplicity(m)∈ports(Pat) ∖ (p_component(Pat))∼[{c}] → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬m=Pat"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="m=Pat"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="free_c/to_unfold_p/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2,p3"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p2,p3"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p8"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_p⊆ports(Pat) ∖ (p_component(Pat))∼[{c}]"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_p⊆(ports{Pat ↦ ports(Pat) ∖ (p_component(Pat))∼[{c}]})(Pat)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="free_c/prt/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5,p6"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p5,p6"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p2,p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p7" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p13"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p16" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p18"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p1"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="⊤∧⊤∧Pat∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Pat∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(ports)∧ports∈Model ⇸ ℙ(Port)∧Pat∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pat∈Model"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pat∈dom(p_component)"/> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="free_c/pc_ty/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1,p2"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p1,p2"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p7"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="free_c/pc/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3,p4"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p3,p4"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p14"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps="p1"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Pat∈Model"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈dom(p_component)"/> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="instanciate_pattern/pm/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p4,p5"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤∧⊤"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pat∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(ports)∧ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="instanciate_pattern/pmult/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model,Port" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2,p3"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p2,p3"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="p6,p7" org.eventb.core.prInfHyps="p5"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p15"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p17,p18,p2,p3,p19,p20,p21,p22"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p23"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p25"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p26" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p27"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p27" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p28"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p28,p59,p2,p3,p60,p61,p62,p9,p63"/> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p28" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p64,p65,p66"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prHypAction> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p64,p65,p66"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_mult_others" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Component×Port)"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀pp⦂Port·pp∈ports(Pat)⇒finite(inst_ports[{pp}])"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="p_index∈dom(inst2pat_p) → ℕ"> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_index" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="inst2pat_p[IPort]⊆IPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="inst2pat_p;ports∼=ports∼;inst2pat_c"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_mult_others∈components(Pat) ∖ dom(inst_components) → ℕ"> |
|
|
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pat∈dom(ports)"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="p_multiplicityp_mult_others{pp⦂Port·pp∈(components;ports)[{Pat}] ∣ pp ↦ card(inst_ports[{pp}])}∈({Inst} ⩤ components;(components[{Inst}] ⩤ ports))[Pattern] → ℕ"/> |
|
|
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="container⊆f"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="pat_roots=components(Pat) ∖ dom(container(Pat))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prIdent name="pat_roots" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀pp⦂Port·Pat∈dom(ports)∧ports∈Model ⇸ ℙ(Port)∧(pp∈ports(Pat)⇒finite(inst_ports[{pp}]))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="inst2pat_p∈(components;ports)[{Inst}] → (components;ports)[{Pat}]"> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀pp⦂Port·pp∈(components;ports)[{Pat}]⇒finite(inst_ports[{pp}])"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="p_multiplicity(p_mult_others{pp⦂Port·pp∈(components;ports)[{Pat}] ∣ pp ↦ card(inst_ports[{pp}])})∈({Inst} ⩤ components;(components[{Inst}] ⩤ ports))[Pattern] → ℕ"/> |
|
|
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀c⦂Component·finite(ports[{c}])"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="ports∈Model → ℙ(Port)"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="inst_components∈components(Pat) ↔ components(Mdl)"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="inst_components∼∈components(Mdl) ⇸ components(Pat)"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="ran(to_unfold_p_in)⊆dom(inst2pat_c)"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="inst2pat_p[OPort]⊆OPort"> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="components∼∈Component ⇸ Model"/> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="ports∼∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="f;f⊆f"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="to_unfold_p_in∈(components;ports)[{Pat}] ↔ components[{Inst}]"> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="inst_ports∈ports(Pat) ↔ ports(Mdl)"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="to_unfold_p_in;inst2pat_c⊆ports∼"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀pp⦂Port·⊤∧⊤∧(pp∈ports(Pat)⇒finite(inst_ports[{pp}]))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="inst_ports∼∈ports(Mdl) ⇸ ports(Pat)"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="components∈Model ↔ Component"/> |
|
|
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="ports∈ran(components) ↔ Port"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="instanciate_pattern/mult_cstr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="pp,x,x0,x1,m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64" org.eventb.core.prSets="Component,Model,Port" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p52" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p65,p66"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p65,p66"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p51" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p67"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p68"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p55" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p69"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p70"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p71"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p72"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p72" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="p73"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p74" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p76" org.eventb.core.prHyps="p75"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p76" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p78" org.eventb.core.prHyps="p77"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p78" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p79"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p79" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p80"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Pat" org.eventb.core.prHyps="p75"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p81"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p77,p73"/> |
|
|
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Inst" org.eventb.core.prHyps="p81"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p82"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p83"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p84"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p85"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p86"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p87"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p88"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p89"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT8" org.eventb.core.prHyps="p32,p10,p47,p7,p58,p28,p17,p23,p75"/> |
|
|
<org.eventb.core.prHypAction name="SELECT9" org.eventb.core.prHyps="p77"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p80" org.eventb.core.prHyps="p26,p10,p59,p37,p11,p56,p13,p61,p27,p19,p53,p46,p62,p44,p41,p14,p22,p63,p24,p15,p1,p64,p29,p54,p40,p48,p2,p38,p20,p45,p42,p25,p43,p6,p34,p12,p8,p60,p9,p21,p31,p5,p57,p16,p49,p50,p35,p36,p4,p39,p3,p28,p18,p32,p7,p17,p47,p33,p58,p23,p65,p66,p67,p68,p69,p73,p75,p77,p81,p82,p83,p84,p85,p86,p87,p88,p89"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p90"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees pp)" org.eventb.core.prGoal="p90" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p91"> |
|
|
<org.eventb.core.prIdent name="pp" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Pat" org.eventb.core.prHyps="p75"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p77" org.eventb.core.prInfHyps="p81"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p77,p73"/> |
|
|
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Inst" org.eventb.core.prGoal="p91" org.eventb.core.prHyps="p81"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p92"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p28" org.eventb.core.prInfHyps="p82"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p32" org.eventb.core.prInfHyps="p83"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p7" org.eventb.core.prInfHyps="p84"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p17" org.eventb.core.prInfHyps="p85"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p47" org.eventb.core.prInfHyps="p86"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p87"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p88"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p10" org.eventb.core.prInfHyps="p89"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT8" org.eventb.core.prHyps="p32,p10,p47,p7,p58,p28,p17,p23,p75"/> |
|
|
<org.eventb.core.prHypAction name="SELECT9" org.eventb.core.prHyps="p77"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="p26,p10,p59,p37,p11,p56,p13,p61,p27,p19,p53,p46,p62,p44,p41,p14,p22,p63,p24,p15,p1,p64,p29,p54,p40,p48,p2,p38,p20,p45,p42,p25,p43,p6,p34,p12,p8,p60,p9,p21,p31,p5,p57,p16,p49,p50,p35,p36,p4,p39,p3,p28,p18,p32,p7,p17,p47,p33,p58,p23,p65,p66,p67,p68,p69,p73,p75,p77,p81,p82,p83,p84,p85,p86,p87,p88,p89"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="p93"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p94" org.eventb.core.prHyps="p25"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p95"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Pat" org.eventb.core.prGoal="p95" org.eventb.core.prHyps="p75"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p97"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p93" org.eventb.core.prInfHyps="p96"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p73,p93"/> |
|
|
<org.eventb.core.prHypAction name="SELECT2" org.eventb.core.prHyps="p10"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p32,p10,p47,p65,p66,p7,p8,p96,p58,p28,p17,p75"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p25"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p47,p58"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p26,p10"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p23"/> |
|
|
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p97" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p98"> |
|
|
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in goal" org.eventb.core.prGoal="p98" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p99"> |
|
|
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p99" org.eventb.core.prHyps="p25,p26,p10,p58,p23,p47"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/> |
|
|
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p100"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees x,x0,x1)" org.eventb.core.prGoal="p100" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p101"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/> |
|
|
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p101" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p104" org.eventb.core.prHyps="p102,p103"> |
|
|
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({pp·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])})" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p102" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p105"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p105"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p105" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p106"/> |
|
|
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in hyp ({pp·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])})" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p103" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p107"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p107"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p107" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p108"/> |
|
|
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x0∈(ports(Pat) ⩤ p_mult_others)∪{pp·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p106" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p109"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p109"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p109" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p110"/> |
|
|
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x1∈(ports(Pat) ⩤ p_mult_others)∪{pp·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p108" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p111"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p111"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p111" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p112"/> |
|
|
<org.eventb.core.prRule name="r14" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∨ hyp (x ↦ x0∈ports(Pat) ⩤ p_mult_others∨(x∈ports(Pat)∧card(inst_ports[{x}])=x0))" org.eventb.core.prHyps="p110"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p113"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p110"/> |
|
|
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p110" org.eventb.core.prHyps="p113" org.eventb.core.prInfHyps="p114"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p114"/> |
|
|
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p104" org.eventb.core.prHyps="p10,p47,p25,p113,p26,p58,p112,p23"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/> |
|
|
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p115,p116"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p110"/> |
|
|
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p110" org.eventb.core.prHyps="p115,p116" org.eventb.core.prInfHyps="p117"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p112" org.eventb.core.prHyps="p116" org.eventb.core.prInfHyps="p118"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p117"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p118" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p119"/> |
|
|
<org.eventb.core.prRule name="r16" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="he with card(inst_ports[{x}])=x0" org.eventb.core.prGoal="p104" org.eventb.core.prHyps="p115"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p120"> |
|
|
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p120" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p120"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p119" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p121"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p121" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p122"/> |
|
|
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="remove ∈ in x ↦ x1∈ports(Pat) ⩤ p_mult_others" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p122" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p123,p124"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p123,p124"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p123" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p125"/> |
|
|
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p125" org.eventb.core.prHyps="p116" org.eventb.core.prInfHyps="p126"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p126" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p127"/> |
|
|
<org.eventb.core.prRule name="r17" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p127"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p128"> |
|
|
<org.eventb.core.prRule name="r18" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ah (dom({pp·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])})=ports(Pat))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p129"> |
|
|
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p129" org.eventb.core.prHyps="p21,p9"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p130"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p130" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p131"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees pp)" org.eventb.core.prGoal="p131" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p132"> |
|
|
<org.eventb.core.prIdent name="pp" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p132" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p134" org.eventb.core.prHyps="p133"> |
|
|
<org.eventb.core.prRule name="r19" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp (inst Mdl)" org.eventb.core.prHyps="p43"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p135"> |
|
|
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p135" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p136"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p43"/> |
|
|
<org.eventb.core.prRule name="r21" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="finite set" org.eventb.core.prGoal="p134" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p137"> |
|
|
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p137" org.eventb.core.prHyps="p21,p33"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p138"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p138" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p135"> |
|
|
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p135" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p136"> |
|
|
<org.eventb.core.prRule name="r22" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p136" org.eventb.core.prHyps="p136"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p139"> |
|
|
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p139" org.eventb.core.prHyps="p10,p47,p25,p133,p136,p26,p58,p23"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/> |
|
|
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prExprRef name=".expr" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p140" org.eventb.core.prHyps="p129"> |
|
|
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p129" org.eventb.core.prHyps="p21,p9" org.eventb.core.prInfHyps="p130"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p140" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p135"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p130" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p131"/> |
|
|
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p135" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p129,p140"> |
|
|
<org.eventb.core.prRule name="r15" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p129" org.eventb.core.prHyps="p21,p9" org.eventb.core.prInfHyps="p130"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p140"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p130" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p131"/> |
|
|
<org.eventb.core.prRule name="r23" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="rewrites set equality in goal" org.eventb.core.prGoal="p128" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p141"> |
|
|
<org.eventb.core.prRule name="r12" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p141" org.eventb.core.prHyps="p131,p10,p47,p25,p26,p58,p23"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/> |
|
|
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p142"> |
|
|
<org.eventb.core.prRule name="r13" org.eventb.core.confidence="1000" org.eventb.core.prDisplay=" rewrites in goal" org.eventb.core.prGoal="p142" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p143"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p143" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p144"> |
|
|
<org.eventb.core.prRule name="r24" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="dom. or ran. / union dist. rewrites in goal" org.eventb.core.prGoal="p144" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p145"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p145" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p135"> |
|
|
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p135" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prPredRef name=".pred" org.eventb.core.prRef="p140"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p147" org.eventb.core.prHyps="p146"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p147" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p148" org.eventb.core.prHyps="p77"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p148" org.eventb.core.prHyps="p12"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p149"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p149" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p150"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Inst" org.eventb.core.prGoal="p150" org.eventb.core.prHyps="p77"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p152"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p73" org.eventb.core.prInfHyps="p89"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p146" org.eventb.core.prInfHyps="p151"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p146,p73"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p152" org.eventb.core.prHyps="p26,p10,p59,p37,p11,p56,p13,p61,p27,p19,p53,p46,p62,p44,p41,p14,p22,p63,p24,p15,p1,p64,p29,p54,p40,p48,p2,p38,p20,p45,p42,p25,p43,p6,p34,p12,p8,p60,p9,p21,p31,p5,p57,p16,p49,p50,p35,p36,p4,p39,p3,p28,p18,p32,p7,p17,p47,p33,p58,p23,p65,p66,p67,p68,p69,p73,p146,p77,p89,p151"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p153" org.eventb.core.prHyps="p93"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p153" org.eventb.core.prHyps="p12"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p154"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p154" org.eventb.core.prHyps="p25"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p155"> |
|
|
<org.eventb.core.prRule name="r25" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ hyp mp (inst m)" org.eventb.core.prHyps="p8"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p135"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p8"/> |
|
|
<org.eventb.core.prRule name="r20" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p135" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p73"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p8"/> |
|
|
<org.eventb.core.prRule name="r22" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p73" org.eventb.core.prHyps="p73"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name=")" org.eventb.core.prHyps="p155"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p8"/> |
|
|
<org.eventb.core.prRule name="r22" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p155" org.eventb.core.prHyps="p155"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prExprRef name=".exprs" org.eventb.core.prRef="e2"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="p_index" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="p_mult_others" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="pat_roots" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
<org.eventb.core.prPred name="p131" org.eventb.core.predicate="∀pp⦂Port·pp∈ports(Pat)⇒finite(inst_ports[{pp}])"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="p_index∈dom(inst2pat_p) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="inst2pat_p[IPort]⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="c_mult_others∈components(Inst) ∖ dom(inst_components) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p142" org.eventb.core.predicate="ports(Pat)⊆dom(p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])})"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c_mult_others∈components(Pat) ∖ dom(inst_components) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pat∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p140" org.eventb.core.predicate="dom({pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])})=ports(Pat)"/> |
|
|
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}∈(∅ ⦂ ℙ(Port)) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p114" org.eventb.core.predicate="⊤∨(x∈ports(Pat)∧card(inst_ports[{x}])=x0)"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}∈({Inst} ⩤ ports)(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p100" org.eventb.core.predicate="∀x⦂Port,x0⦂ℤ,x1⦂ℤ·x ↦ x0∈p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}∧x ↦ x1∈p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}⇒x0=x1"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="p_multiplicity∈Pattern → (Port ⇸ ℕ)"/> |
|
|
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="Pat=Inst"/> |
|
|
<org.eventb.core.prPred name="p137" org.eventb.core.predicate="Mdl∈dom(ports)∧ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p108" org.eventb.core.predicate="x ↦ x1∈(ports(Pat) ⩤ p_mult_others)∪{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p112" org.eventb.core.predicate="x ↦ x1∈ports(Pat) ⩤ p_mult_others∨(x∈ports(Pat)∧card(inst_ports[{x}])=x1)"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="Pat∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="pat_roots=components(Pat) ∖ dom(container(Pat))"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Mdl∈dom(components)"/> |
|
|
<org.eventb.core.prPred name="p129" org.eventb.core.predicate="∀pp⦂Port·Pat∈dom(ports)∧ports∈Model ⇸ ℙ(Port)∧(pp∈ports(Pat)⇒finite(inst_ports[{pp}]))"/> |
|
|
<org.eventb.core.prPred name="p144" org.eventb.core.predicate="ports(Pat)⊆dom((ports(Pat) ⩤ p_mult_others)∪{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])})"/> |
|
|
<org.eventb.core.prPred name="p102" org.eventb.core.predicate="x ↦ x0∈p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p123" org.eventb.core.predicate="x∉ports(Pat)"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="∀pp⦂Port·¬pp∈ports(Pat)"/> |
|
|
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="m∈Pattern"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p116" org.eventb.core.predicate="x∈ports(Pat)"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="inst2pat_c;container(Pat)=container(Inst);inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒(p_multiplicity{Pat ↦ p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}})(m)∈(ports{Inst ↦ (∅ ⦂ ℙ(Port))})(m) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="inst_ports∈ports(Inst) ↔ ports(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="p_mult_others∈ports(Pat) ∖ dom(inst_ports) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="p_mult_others=(∅ ⦂ ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="pat_roots=components(Inst) ∖ dom(container(Inst))"/> |
|
|
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="Inst∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p149" org.eventb.core.predicate="p_multiplicity(m)∈(∅ ⦂ ℙ(Port)) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p147" org.eventb.core.predicate="({Pat} ⩤ p_multiplicity)(m)∈(ports{Inst ↦ (∅ ⦂ ℙ(Port))})(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p107" org.eventb.core.predicate="x ↦ x1∈(dom({pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}) ⩤ p_mult_others)∪{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p113" org.eventb.core.predicate="x ↦ x0∈ports(Pat) ⩤ p_mult_others"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="m=Pat"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p126" org.eventb.core.predicate="¬⊤"/> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="inst2pat_p∈ports(Inst) → ports(Pat)"/> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="Mdl∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀m⦂Model·p_component(m)∈ports(m) → components(m)"/> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="to_unfold_p_in;inst2pat_c⊆p_component(Pat)"/> |
|
|
<org.eventb.core.prPred name="p117" org.eventb.core.predicate="x ↦ x0∈ports(Pat) ⩤ p_mult_others∨(⊤∧⊤)"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p97" org.eventb.core.predicate="p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}∈ports(Pat) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="components∈Model → ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="inst2pat_p[OPort]⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p145" org.eventb.core.predicate="ports(Pat)⊆dom(ports(Pat) ⩤ p_mult_others)∪dom({pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])})"/> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p110" org.eventb.core.predicate="x ↦ x0∈ports(Pat) ⩤ p_mult_others∨(x∈ports(Pat)∧card(inst_ports[{x}])=x0)"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p139" org.eventb.core.predicate="inst_ports[{pp}]⊆ports(Mdl)"> |
|
|
<org.eventb.core.prIdent name="pp" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p109" org.eventb.core.predicate="x ↦ x0∈ports(Pat) ⩤ p_mult_others∨x ↦ x0∈{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="Inst∈dom(components)"/> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀m⦂Model·finite(ports(m))"/> |
|
|
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="Inst∈dom(container)"/> |
|
|
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="inst_ports∈ports(Pat) ↔ ports(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p98" org.eventb.core.predicate="p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}∈ports(Pat) ⇸ ℕ"/> |
|
|
<org.eventb.core.prPred name="p120" org.eventb.core.predicate="card(inst_ports[{x}])=x1"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/> |
|
|
<org.eventb.core.prPred name="p132" org.eventb.core.predicate="pp∈ports(Pat)⇒finite(inst_ports[{pp}])"> |
|
|
<org.eventb.core.prIdent name="pp" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p154" org.eventb.core.predicate="p_multiplicity(m)∈({Inst} ⩤ ports)(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p135" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="p_mult_others∈ports(Inst) ∖ dom(inst_ports) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p127" org.eventb.core.predicate="⊥"/> |
|
|
<org.eventb.core.prPred name="p153" org.eventb.core.predicate="({Pat} ⩤ p_multiplicity)(m)∈({Inst} ⩤ ports)(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="Inst≠Mdl"/> |
|
|
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p101" org.eventb.core.predicate="x ↦ x0∈p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}∧x ↦ x1∈p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}⇒x0=x1"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/> |
|
|
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p128" org.eventb.core.predicate="dom(p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])})=ports(Pat)"/> |
|
|
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="inst_components∼∈components(Mdl) ⇸ components(Inst)"/> |
|
|
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="inst2pat_p;p_component(Pat)=p_component(Inst);inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p122" org.eventb.core.predicate="x ↦ x1∈ports(Pat) ⩤ p_mult_others"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p130" org.eventb.core.predicate="∀pp⦂Port·⊤∧⊤∧(pp∈ports(Pat)⇒finite(inst_ports[{pp}]))"/> |
|
|
<org.eventb.core.prPred name="p115" org.eventb.core.predicate="card(inst_ports[{x}])=x0"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="inst_ports∼∈ports(Mdl) ⇸ ports(Pat)"/> |
|
|
<org.eventb.core.prPred name="p118" org.eventb.core.predicate="x ↦ x1∈ports(Pat) ⩤ p_mult_others∨(⊤∧card(inst_ports[{x}])=x1)"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p146" org.eventb.core.predicate="¬m=Pat"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p141" org.eventb.core.predicate="dom(p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])})⊆ports(Pat)"/> |
|
|
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·f∈components(m) ↔ components(m)∧container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="Pat∈dom(components)"/> |
|
|
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="Pat∈dom(container)"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container(Pat)"/> |
|
|
<org.eventb.core.prPred name="p138" org.eventb.core.predicate="⊤∧⊤"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p134" org.eventb.core.predicate="finite(inst_ports[{pp}])"> |
|
|
<org.eventb.core.prIdent name="pp" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p104" org.eventb.core.predicate="x0=x1"> |
|
|
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/> |
|
|
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p111" org.eventb.core.predicate="x ↦ x1∈ports(Pat) ⩤ p_mult_others∨x ↦ x1∈{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p143" org.eventb.core.predicate="ports(Pat)⊆dom((dom({pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}) ⩤ p_mult_others)∪{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])})"/> |
|
|
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}∈(ports{Inst ↦ (∅ ⦂ ℙ(Port))})(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒p_multiplicity(m)∈ports(m) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p99" org.eventb.core.predicate="p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}∈ports(Pat) ↔ ℕ"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/> |
|
|
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="¬m=Inst"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p152" org.eventb.core.predicate="p_multiplicity(Inst)=(∅ ⦂ ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/> |
|
|
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="¬pp∈ports(Pat)"> |
|
|
<org.eventb.core.prIdent name="pp" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p136" org.eventb.core.predicate="finite(ports(Mdl))"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/> |
|
|
<org.eventb.core.prPred name="p96" org.eventb.core.predicate="¬Pat=Inst"/> |
|
|
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="inst_ports∼∈ports(Mdl) ⇸ ports(Inst)"/> |
|
|
<org.eventb.core.prPred name="p148" org.eventb.core.predicate="({Pat} ⩤ p_multiplicity)(m)∈(∅ ⦂ ℙ(Port)) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_c∈components(Inst) → components(Pat)"/> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p124" org.eventb.core.predicate="x ↦ x1∈p_mult_others"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="¬Inst=Mdl"/> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst_components∈components(Pat) ↔ components(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="inst_components∼∈components(Mdl) ⇸ components(Pat)"/> |
|
|
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="p_mult_others=(∅ ⦂ ℙ(Port×ℤ))∧(∀pp⦂Port·¬pp∈ports(Pat))"/> |
|
|
<org.eventb.core.prPred name="p121" org.eventb.core.predicate="x ↦ x1∈ports(Pat) ⩤ p_mult_others∨⊥"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="ran(to_unfold_p_in)⊆dom(inst2pat_c)"/> |
|
|
<org.eventb.core.prPred name="p119" org.eventb.core.predicate="x ↦ x1∈ports(Pat) ⩤ p_mult_others∨card(inst_ports[{x}])=x1"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="inst_components∈components(Inst) ↔ components(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ↔ components(Inst)"/> |
|
|
<org.eventb.core.prPred name="p133" org.eventb.core.predicate="pp∈ports(Pat)"> |
|
|
<org.eventb.core.prIdent name="pp" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p151" org.eventb.core.predicate="¬Inst=Pat"/> |
|
|
<org.eventb.core.prPred name="p150" org.eventb.core.predicate="p_multiplicity(m)=(∅ ⦂ ℙ(Port×ℤ))"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="m∈Pattern⇒(p_multiplicity{Pat ↦ p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}})(m)∈(ports{Inst ↦ (∅ ⦂ ℙ(Port))})(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="¬pp∈ports(Inst)"> |
|
|
<org.eventb.core.prIdent name="pp" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p106" org.eventb.core.predicate="x ↦ x0∈(ports(Pat) ⩤ p_mult_others)∪{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p103" org.eventb.core.predicate="x ↦ x1∈p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x1" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="Inst∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p155" org.eventb.core.predicate="p_multiplicity(m)∈ports(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p105" org.eventb.core.predicate="x ↦ x0∈(dom({pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}) ⩤ p_mult_others)∪{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="x0" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p125" org.eventb.core.predicate="¬x∈ports(Pat)"> |
|
|
<org.eventb.core.prIdent name="x" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="(p_multiplicity{Pat ↦ p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}})(m)∈(ports{Inst ↦ (∅ ⦂ ℙ(Port))})(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="m=Inst"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}∈ports(m) → ℕ"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="to_unfold_p_in∈ports(Pat) ↔ components(Inst)"/> |
|
|
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/> |
|
|
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="Mdl"/> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="ports(Mdl)"/> |
|
|
<org.eventb.core.prExpr name="e2" org.eventb.core.expression="m"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prExpr> |
|
|
<org.eventb.core.prReas name="r23" org.eventb.core.prRID="org.eventb.core.seqprover.setEqlRewrites"/> |
|
|
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.rmL1"/> |
|
|
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/> |
|
|
<org.eventb.core.prReas name="r13" org.eventb.core.prRID="org.eventb.core.seqprover.relOvrRewrites"/> |
|
|
<org.eventb.core.prReas name="r21" org.eventb.core.prRID="org.eventb.core.seqprover.finiteSet:0"/> |
|
|
<org.eventb.core.prReas name="r24" org.eventb.core.prRID="org.eventb.core.seqprover.domRanUnionDistRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r22" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/> |
|
|
<org.eventb.core.prReas name="r19" org.eventb.core.prRID="org.eventb.core.seqprover.allD"/> |
|
|
<org.eventb.core.prReas name="r25" org.eventb.core.prRID="org.eventb.core.seqprover.allmpD:0"/> |
|
|
<org.eventb.core.prReas name="r16" org.eventb.core.prRID="org.eventb.core.seqprover.he:1"/> |
|
|
<org.eventb.core.prReas name="r15" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r17" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/> |
|
|
<org.eventb.core.prReas name="r12" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/> |
|
|
<org.eventb.core.prReas name="r14" org.eventb.core.prRID="org.eventb.core.seqprover.disjE"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/> |
|
|
<org.eventb.core.prReas name="r18" org.eventb.core.prRID="org.eventb.core.seqprover.cut"/> |
|
|
<org.eventb.core.prReas name="r20" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="instanciate_pattern/p_mult/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="pp" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10,p11"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p10,p11"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p23"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p25"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p26"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p27"/> |
|
|
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p28"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees pp)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29"> |
|
|
<org.eventb.core.prIdent name="pp" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p29" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p30"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p1,p6,p8,p7,p5,p3,p9,p2,p10,p11,p30"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c_mult" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_mult_others" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Component×Port)"/> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="finite(inst_ports[{pp}])"> |
|
|
<org.eventb.core.prIdent name="pp" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="pp∈(components;ports)[{Pat}]⇒finite(inst_ports[{pp}])"> |
|
|
<org.eventb.core.prIdent name="pp" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="p_mult_others∈(components;ports)[{Pat}] ∖ dom(inst_ports) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="inst_components∼∈components[{Mdl}] ⇸ components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="inst_components∈components[{Pat}] ↔ components[{Mdl}]"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀p⦂Port·finite(inst_ports[{p}])"/> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀pp⦂Port·pp∈(components;ports)[{Pat}]⇒finite(inst_ports[{pp}])"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="c_mult=c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="c_mult_others∈components[{Pat}] ∖ dom(inst_components) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="inst_ports∼∈(components;ports)[{Mdl}] ⇸ (components;ports)[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="cProperties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="cProperties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="pp∈(components;ports)[{Pat}]"> |
|
|
<org.eventb.core.prIdent name="pp" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="inst_ports∈(components;ports)[{Pat}] ↔ (components;ports)[{Mdl}]"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="components∈Model ↔ Component"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="clone_c/to_unfold_c/SIM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1,p2"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p1,p2"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p10"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Mdl∈Model"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="¬Mdl=Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Mdl≠Pat"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_p/p_in_p_mult/THM" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1,p2"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p1,p2"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p7"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="p_finite/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p2" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p3,p4"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p3,p4"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p10"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p14" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p16"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps="p1"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="m∈Model"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·m∈dom(ports)∧ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="(∀m⦂Model·m∈dom(ports))∧ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="m∈dom(ports)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·m∈dom(ports)"/> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="clone_c/p_finite/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7,p8"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p7,p8"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p13"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p16"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p17" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p2,p3,p6,p1,p7,p8,p16"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p20"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p21"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p4"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p2,p3,p6,p1,p7,p8,p21"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="cloned_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="cloned_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="finite(ports(m))"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="finite((ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(m))"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="cloned_c∈(container(Pat))∼[{to_clone_c(c)}] ↣ Component ∖ union(ran(components))"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="cloned_p∈(p_component(Pat))∼[{to_clone_c(c)}] ↣ Port ∖ union(ran(ports))"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="∀m⦂Model·finite(ports(m))"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="finite(ports(Pat))"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="finite(ports(Pat))∧finite(ran(cloned_p))"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="finite(({Pat} ⩤ ports)(m))"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈dom(to_clone_c)"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·finite((ports{Pat ↦ ports(Pat)∪ran(cloned_p)})(m))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="finite(ports(Pat)∪ran(cloned_p))"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬m=Pat"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="finite(ran(cloned_p))"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="m=Pat"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_p/p_finite/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Port" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2,p3"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p2,p3"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p10"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c0)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12"> |
|
|
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p13"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p16"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="new_p" org.eventb.core.type="ℙ(ℤ×Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Component×Port)"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c0⦂Component·finite((ports∪({c} × ran(new_p)))[{c0}])"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="finite((ports∪({c} × ran(new_p)))[{c0}])"> |
|
|
<org.eventb.core.prIdent name="c0" org.eventb.core.type="Component"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∈Model ↔ Component"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="free_c/p_finite/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5,p6"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p5,p6"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p14"/> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p16"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p1,p2,p5,p6,p16"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_free_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="finite(ports(m))"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·finite((ports{Pat ↦ ports(Pat) ∖ (p_component(Pat))∼[{c}]})(m))"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="finite(ports(Pat) ∖ (p_component(Pat))∼[{c}])"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="finite((ports{Pat ↦ ports(Pat) ∖ (p_component(Pat))∼[{c}]})(m))"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m⦂Model·finite(ports(m))"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="finite(({Pat} ⩤ ports)(m))"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈to_free_c ∖ ran(to_clone_c)"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="¬m=Pat"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="m=Pat"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="apply_pattern/p_finite/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="c" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Port" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2,p3"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p2,p3"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p10"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p11"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees c)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12"> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p13"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p16"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p16,p45,p46,p47,p48,p49,p5,p50"/> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p51,p52,p53"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prHypAction> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p51,p52,p53"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="new_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Component×Port)"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="p_index∈dom(inst2pat_p) → ℕ"> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_index" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="inst2pat_p[IPort]⊆IPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="inst2pat_p;ports∼=ports∼;inst2pat_c"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="Pat∈Pattern"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="container⊆f"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="inst2pat_p∈(components;ports)[{Inst}] → (components;ports)[{Pat}]"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="p_multiplicity∈(components;ports)[Pattern] → ℕ"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="ran(to_unfold_p_in)⊆dom(inst2pat_c)"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst2pat_p[OPort]⊆OPort"> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components∼∈Component ⇸ Model"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="ports∼∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="f;f⊆f"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="to_unfold_p_in∈(components;ports)[{Pat}] ↔ components[{Inst}]"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="finite((ports∪((inst_components∪new_components)∼;ports;(inst_ports∪new_ports)))[{c}])"> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="to_unfold_p_in;inst2pat_c⊆ports∼"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="Inst∈Model ∖ Pattern"> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀c⦂Component·finite((ports∪((inst_components∪new_components)∼;ports;(inst_ports∪new_ports)))[{c}])"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∈Model ↔ Component"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="ports∈ran(components) ↔ Port"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="instanciate_pattern/pc_ctr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4" org.eventb.core.prSets="Component,Model,Port" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6,p7"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p6,p7"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p17"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Inst" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p17"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p19" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p20" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p21"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p23" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p17"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p17"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p26"/> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p26"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p21"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p4"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p26"/> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p26"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p29" org.eventb.core.prHyps="p21"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p29" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p17"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p26"/> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p26"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p21"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p33"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p33" org.eventb.core.prHyps="p4"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34"> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="DESELECT0" org.eventb.core.prHyps="p35,p36,p6,p7,p37,p38,p21,p39,p40,p41"/> |
|
|
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R30000"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="(p_component{Inst ↦ (∅ ⦂ ℙ(Port×Component))})(m)∈(ports{Inst ↦ (∅ ⦂ ℙ(Port))})(m) → (components{Inst ↦ (∅ ⦂ ℙ(Component))})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="(∅ ⦂ ℙ(Port×Component))∈(ports{Inst ↦ (∅ ⦂ ℙ(Port))})(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="inst_components∼∈components(Mdl) ⇸ components(Pat)"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m⦂Model·p_component(m)∈ports(m) → components(m)"/> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="p_component(m)∈ports(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="(p_component{Inst ↦ (∅ ⦂ ℙ(Port×Component))})(m)∈(ports{Inst ↦ (∅ ⦂ ℙ(Port))})(m) → (∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="c_mult_others∈components(Pat) ∖ dom(inst_components) → ℕ"> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="({Inst} ⩤ p_component)(m)∈(ports{Inst ↦ (∅ ⦂ ℙ(Port))})(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="p_component(m)∈(∅ ⦂ ℙ(Port)) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="(∅ ⦂ ℙ(Port×Component))∈({Inst} ⩤ ports)(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="inst_ports∈ports(Pat) ↔ ports(Mdl)"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="inst_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="¬m=Inst"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="pat_roots=components(Pat) ∖ dom(container(Pat))"> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prIdent name="pat_roots" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="⊥"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="(p_component{Inst ↦ (∅ ⦂ ℙ(Port×Component))})(m)∈(ports{Inst ↦ (∅ ⦂ ℙ(Port))})(m) → ({Inst} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="(p_component{Inst ↦ (∅ ⦂ ℙ(Port×Component))})(m)∈(ports{Inst ↦ (∅ ⦂ ℙ(Port))})(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="(p_component{Inst ↦ (∅ ⦂ ℙ(Port×Component))})(Inst)∈(ports{Inst ↦ (∅ ⦂ ℙ(Port))})(Inst) → (∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="({Inst} ⩤ p_component)(m)∈({Inst} ⩤ ports)(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="p_mult_others∈ports(Pat) ∖ dom(inst_ports) → ℕ"> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="inst_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_mult_others" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·(p_component{Inst ↦ (∅ ⦂ ℙ(Port×Component))})(m)∈(ports{Inst ↦ (∅ ⦂ ℙ(Port))})(m) → (components{Inst ↦ (∅ ⦂ ℙ(Component))})(m)"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="m=Inst"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="(∅ ⦂ ℙ(Port×Component))∈(∅ ⦂ ℙ(Port)) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="(∅ ⦂ ℙ(Port×Component))∈ports(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="({Inst} ⩤ p_component)(m)∈(∅ ⦂ ℙ(Port)) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="inst_ports∼∈ports(Mdl) ⇸ ports(Pat)"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="inst_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="inst_components∈components(Pat) ↔ components(Mdl)"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="p_component(m)∈({Inst} ⩤ ports)(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_root_c/pc_ctr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6,p7"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p6,p7"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p17"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Inst" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p17"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p5,p17,p1,p2,p6,p7"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p20"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p5,p20,p1,p2,p6,p7"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·p_component(m)∈ports(m) → (components{Inst ↦ components(Inst)∪ran(new_c)})(m)"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="p_component(m)∈ports(m) → (components{Inst ↦ components(Inst)∪ran(new_c)})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m⦂Model·p_component(m)∈ports(m) → components(m)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c∈to_unfold_c"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="p_component(m)∈ports(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="components∈Model → ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="p_component(Inst)∈ports(Inst) → components(Inst)∪ran(new_c)"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="p_component(m)∈ports(m) → components(Inst)∪ran(new_c)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="m=Inst"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="p_component(m)∈ports(m) → ({Inst} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬m=Inst"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_node_c/pc_ctr/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="m" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6,p7"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p6,p7"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p14"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p15"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees m)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p16"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p16" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p17"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with m=Inst" org.eventb.core.prGoal="p18" org.eventb.core.prHyps="p17"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p1,p5,p4,p6,p7,p17"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p20"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p1,p5,p4,p6,p7,p20"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀m⦂Model·p_component(m)∈ports(m) → (components{Inst ↦ components(Inst)∪ran(new_c)})(m)"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="p_component(m)∈ports(m) → (components{Inst ↦ components(Inst)∪ran(new_c)})(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="∀m⦂Model·p_component(m)∈ports(m) → components(m)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="p_component(m)∈ports(m) → components(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model → ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="new_c∈1 ‥ c_multiplicity(Pat)(c) ↣ Component ∖ union(ran(components))"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="p_component(Inst)∈ports(Inst) → components(Inst)∪ran(new_c)"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="p_component(m)∈ports(m) → components(Inst)∪ran(new_c)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="m=Inst"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="p_component(m)∈ports(m) → ({Inst} ⩤ components)(m)"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="¬m=Inst"> |
|
|
<org.eventb.core.prIdent name="m" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="to_unfold_p_in/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5,p6"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p5,p6"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p7"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p7" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p14"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p15"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p16"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p14" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p18" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p19" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p20"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p20" org.eventb.core.prHyps="p3"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pat∈dom(ports)∧ports∈Model ⇸ ℙ(Port)∧⊤∧⊤"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Pat∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(ports)∧ports∈Model ⇸ ℙ(Port)∧Inst∈dom(components)∧components∈Model ⇸ ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Pat∈Model"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Inst∈dom(components)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈dom(ports)∧ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="Model"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_root_c/cloned_p_ty/WD"/> |
|
|
<org.eventb.core.prProof name="unfold_p/to_unfold_p_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7,p8"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p7,p8"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p16"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p18"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p20"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p22"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p23"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p24"/> |
|
|
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p25"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="PP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p6,p3,p4,p7,p8"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="new_p" org.eventb.core.type="ℙ(ℤ×Port)"/> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Component×Port)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_p_in ∖ {p ↦ c}∈(components;(ports∪({c} × ran(new_p))))[{Pat}] ↔ components[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_p_in∈(components;ports)[{Pat}] ↔ components[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="p ↦ c∈to_unfold_p_in"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="new_p∈1 ‥ p_multiplicity(p) ↣ Port ∖ ran(components;ports)"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="p∈IPort⇒ran(new_p)⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="cProperties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="cProperties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="p∈OPort⇒ran(new_p)⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="components∈Model ↔ Component"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalPP:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="apply_pattern/to_unfold_p_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46" org.eventb.core.prSets="Component,Model,Port,Property" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p30" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p47,p48"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p47,p48"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p29" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p49"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p50" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p51"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p52" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p53"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p54"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p55"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p56"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p57" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p58" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p59"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p60,p9,p10,p11,p12,p13,p14,p16,p61,p62,p18,p20,p22,p26,p27,p28,p63,p32,p34,p35,p36,p59,p39,p41,p42,p44,p45,p49,p46"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p59" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p64,p65,p66"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prHypAction> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p64,p65,p66"/> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p31,p32,p33,p34,p35,p36,p37,p38,p39,p47,p48,p40,p41,p42,p43,p44,p45,p49,p46"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/> |
|
|
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="inst_props" org.eventb.core.type="ℙ(Property×Property)"/> |
|
|
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="new_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_index" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Component×Port)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_p_in∈((components∪({Mdl} × ran(new_components)));(ports∪((inst_components∪new_components)∼;ports;(inst_ports∪new_ports))))[{Pat}] ↔ (components∪({Mdl} × ran(new_components)))[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="p_index∈dom(inst2pat_p) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="inst2pat_p[IPort]⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="inst2pat_p;ports∼=ports∼;inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="container⊆f"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="dom(inst_components) ◁ container;inst_components⊆inst_components;container"/> |
|
|
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="new_ports[OPort]⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="inst_ports∼;ports∼;inst_components⊆ports∼"/> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="container[dom(inst_components)]⊆dom(inst_components)"/> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst2pat_p∈(components;ports)[{Inst}] → (components;ports)[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/> |
|
|
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="inst_props∈Property ⇸ Property"/> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·finite(ports[{c}])"/> |
|
|
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="inst_ports[IPort]⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/> |
|
|
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="p_multiplicity∈(components;ports)[Pattern] → ℕ"/> |
|
|
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="¬Inst=Mdl"/> |
|
|
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(to_unfold_p_in)⊆dom(inst2pat_c)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="new_ports[IPort]⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="inst2pat_p[OPort]⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∼∈Component ⇸ Model"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="ports∼∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="f;f⊆f"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_unfold_p_in∈(components;ports)[{Pat}] ↔ components[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_p_in;inst2pat_c⊆ports∼"/> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst_ports∈(components;ports)[{Inst}] ⤔ (components;ports)[{Mdl}]"/> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="ports∼[dom(inst_ports)]⊆dom(inst_components)"/> |
|
|
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="Inst≠Mdl"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="new_components∈components[{Inst}] ∖ dom(inst_components) ↣ Component ∖ ran(components)"/> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="new_ports∈(components;ports)[{Inst}] ∖ dom(inst_ports) ↣ Port ∖ ran(components;ports)"/> |
|
|
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="inst_components∈components[{Inst}] ⤔ components[{Mdl}]"/> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="inst_ports[OPort]⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="ports∈ran(components) ↔ Port"/> |
|
|
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="components∈Model ↔ Component"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="instanciate_pattern/to_unfold_p_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p1" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p2,p3"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p2,p3"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p18"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p4" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p5"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p12" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p13"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE5" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p15"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE6" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p18" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Component×Port)"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="(∅ ⦂ ℙ(Port×Component))∈({Inst} ⩤ components;(components[{Inst}] ⩤ ports))[{Pat}] ↔ ({Inst} ⩤ components)[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="¬P=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="P≠(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_root_c/to_unfold_p_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model,Port" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7,p8"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p7,p8"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p11" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p12"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p13"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p14"/> |
|
|
<org.eventb.core.prHypAction name="HIDE2" org.eventb.core.prHyps="p15"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p17"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p19"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p20" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p21"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p23"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p24,p25,p26,p27,p28,p29,p30,p5,p31,p32,p21,p2,p12,p33,p34,p35,p19,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p10,p51,p52,p53,p54,p55,p17,p56,p57,p58,p23,p59,p60,p61,p62,p63,p64,p65,p66,p67,p4,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p78"> |
|
|
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prHypAction> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p78"/> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p67" org.eventb.core.prInfHyps="p79"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p21" org.eventb.core.prInfHyps="p80"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p81"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p67,p23,p21"/> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p4"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p60" org.eventb.core.prInfHyps="p82"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p79" org.eventb.core.prInfHyps="p83"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p60,p79"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p5,p3"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/> |
|
|
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/> |
|
|
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Component×Port)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"> |
|
|
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="finite(ran(c_multiplicity))"/> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="p_index∈dom(inst2pat_p) → ℕ"> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_index" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="inst2pat_p[IPort]⊆IPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="inst2pat_p;ports∼=ports∼;inst2pat_c"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_p_in∪(ports[{c}] × ran(new_c))∈((components∪({Inst} × ran(new_c)));ports)[{Pat}] ↔ (components∪({Inst} × ran(new_c)))[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)>0"/> |
|
|
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="Pat∈Pattern"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="inst2pat_p∈(components;ports)[{Inst}] → (components;ports)[{Pat}]"> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="c∈to_unfold_c"/> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="∀c⦂Component·finite(ports[{c}])"/> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/> |
|
|
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cProperties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="cProperties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/> |
|
|
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="p_multiplicity∈(components;ports)[Pattern] → ℕ"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="ran(to_unfold_p_in)⊆dom(inst2pat_c)"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="container⊆containers"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="inst2pat_p[OPort]⊆OPort"> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/> |
|
|
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)>0"> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="finite(P)"/> |
|
|
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="components∼∈Component ⇸ Model"/> |
|
|
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="ports∼∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_p_in∈(components;ports)[{Pat}] ↔ components[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="to_unfold_p_in;inst2pat_c⊆ports∼"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="P=components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/> |
|
|
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="containers;containers⊆containers"> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="finite(components[{Pat}])"/> |
|
|
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="c∈dom(c_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="Inst∈Model ∖ Pattern"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="components∈Model ↔ Component"/> |
|
|
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="ports∈ran(components) ↔ Port"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="clone_c/to_unfold_p_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="f" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40" org.eventb.core.prSets="Component,Model,Port" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p28" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p41,p42"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p41,p42"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p27" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p43"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p44" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p45"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p46" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p47"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p48"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p49"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p50"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p51"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p10" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p52"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p52" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p53"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p11,p12,p13,p14,p15,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p29,p30,p31,p32,p33,p53,p34,p36,p37,p38,p39,p43,p40"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃f·container⊆f∧f;f⊆f∧id∩f=∅)" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p53" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p54,p55,p56"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prHypAction> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p54,p55,p56"/> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="CVC3" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p11,p12,p13,p14,p15,p56,p16,p17,p54,p18,p19,p20,p21,p55,p22,p23,p24,p25,p26,p29,p30,p31,p32,p33,p34,p35,p41,p42,p36,p37,p38,p39,p43,p40"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/> |
|
|
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="CVC3"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_index" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Component×Port)"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="p_index∈dom(inst2pat_p) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="inst2pat_p[IPort]⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="inst2pat_p;ports∼=ports∼;inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="container⊆f"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_clone_c⊆inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="inst2pat_p∈(components;ports)[{Inst}] → (components;ports)[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"/> |
|
|
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀c⦂Component·finite(ports[{c}])"/> |
|
|
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"/> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="c∈dom(to_clone_c)"/> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="p_multiplicity∈(components;ports)[Pattern] → ℕ"/> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="¬Inst=Mdl"/> |
|
|
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="ran(to_unfold_p_in)⊆dom(inst2pat_c)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="inst2pat_p[OPort]⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="components∼∈Component ⇸ Model"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="ports∼∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="f;f⊆f"> |
|
|
<org.eventb.core.prIdent name="f" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_p_in∈(components;ports)[{Pat}] ↔ components[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="c_multiplicity∈components[Pattern] → ℕ"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="to_unfold_p_in;inst2pat_c⊆ports∼"/> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_p_in∪(ports[{to_clone_c(c)}] × {c})∈(components;ports)[{Pat}] ↔ components[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Inst≠Mdl"/> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"/> |
|
|
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="ports∈ran(components) ↔ Port"/> |
|
|
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="components∈Model ↔ Component"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="clone_c/unfold_p_in/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component,Model"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p4,p5"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p9"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p9" org.eventb.core.prHyps="p2"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="to_clone_c∈Component ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c∈dom(to_clone_c)"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_clone_c∈components[{Inst}] ⇸ components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤∧to_clone_c∈Component ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="c∈dom(to_clone_c)∧to_clone_c∈Component ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_node_c/to_unfold_p_in/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5" org.eventb.core.prSets="Component,Model,Port" org.eventb.core.psManual="true"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7,p8"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p7,p8"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/> |
|
|
<org.eventb.core.prHypAction name="HIDE3" org.eventb.core.prHyps="p15"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p14" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p16"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p17" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p18"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p19" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p20"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE2" org.eventb.core.prHidden="p21" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p22"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE3" org.eventb.core.prHidden="p23" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p24"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE4" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p26"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="sl/ds" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="SELECT0" org.eventb.core.prHyps="p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p24,p3,p18,p37,p38,p39,p22,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p10,p55,p56,p57,p58,p59,p20,p60,p61,p62,p26,p63,p64,p65,p66,p67,p68,p69,p70,p71,p4,p72,p1,p73,p74,p75,p76,p77,p78,p79,p80"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∃ hyp (∃b·∀x·x∈ran(c_multiplicity)⇒b≥x)" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p47" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p81"> |
|
|
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prHypAction> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p81"/> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with M=max(ran(c_multiplicity))" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p71" org.eventb.core.prInfHyps="p82"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p24" org.eventb.core.prInfHyps="p83"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p84"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT3" org.eventb.core.prHyps="p71,p26,p24"/> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with P=components[{Pat}]" org.eventb.core.prHyps="p4"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p64" org.eventb.core.prInfHyps="p85"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p86"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p64,p82"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="veriT" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p5"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="R1000"/> |
|
|
<org.eventb.core.prString name=".config_id" org.eventb.core.prSValue="veriT"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="M" org.eventb.core.type="ℤ"/> |
|
|
<org.eventb.core.prIdent name="P" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×Component)"/> |
|
|
<org.eventb.core.prIdent name="dest" org.eventb.core.type="Component"/> |
|
|
<org.eventb.core.prIdent name="new_c" org.eventb.core.type="ℙ(ℤ×Component)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Component×Port)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒dom(c_indexes(i))=(containers∪(id ⦂ ℙ(Component×Component)))[{inst2pat_c(i)}]"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"> |
|
|
<org.eventb.core.prIdent name="b" org.eventb.core.type="ℤ"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="finite(ran(c_multiplicity))"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="p_index∈dom(inst2pat_p) → ℕ"> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_index" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="inst2pat_p[IPort]⊆IPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="inst2pat_p;ports∼=ports∼;inst2pat_c"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="c_multiplicity∈components[{Pat}] → ℕ"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="to_unfold_p_in∪(ports[{c}] × ran(new_c))∈((components∪({Inst} × ran(new_c)));ports)[{Pat}] ↔ (components∪({Inst} × ran(new_c)))[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="to_unfold_c⊆components[{Pat}]"> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀c⦂Component·c∈to_unfold_c⇒c_multiplicity(c)>0"> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ max(ran(c_multiplicity))⇒¬{c ↦ k}∈ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒c∉dom(m)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒¬{c ↦ k}∈ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Pat∈Pattern"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="M=max(ran(c_multiplicity))"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="¬c_multiplicity=(∅ ⦂ ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·⊤∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="containers∈ran(components) ↔ ran(components)"> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container)"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="to_unfold_c∩dom(container)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒¬c∈dom(m)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (components[{Pat}] ⇸ 1 ‥ max(ran(c_multiplicity)))"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="containers∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="ran(to_unfold_c_in)⊆dom(inst2pat_c)"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="inst2pat_p∈(components;ports)[{Inst}] → (components;ports)[{Pat}]"> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="container∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒containers[{i}]⊆dom(inst2pat_c)"> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="components;container;components∼⊆(id ⦂ ℙ(Model×Model))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="∀c⦂Component·finite(ports[{c}])"/> |
|
|
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="∃b⦂ℤ·∀x⦂ℤ·x∈ran(c_multiplicity)⇒b≥x"/> |
|
|
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="(inst2pat_c;to_unfold_c_in)∩container=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="cProperties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="cProperties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="c_multiplicity∈Component ⇸ ℤ"/> |
|
|
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀c⦂Component·c∈dom(inst2pat_c)⇒c_index(c)∈1 ‥ c_multiplicity(inst2pat_c(c))"> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="components;containers;components∼⊆(id ⦂ ℙ(Model×Model))"> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀c⦂Component,i⦂Component,m⦂ℙ(Component×ℤ)·c ↦ i∈to_unfold_c_in∧c_indexes(i)⊆m∧m∈ran(c_indexes)⇒c∉dom(m)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="p_multiplicity∈(components;ports)[Pattern] → ℕ"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="c ↦ dest∈to_unfold_c_in"/> |
|
|
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="inst2pat_c∈components[{Inst}] → components[{Pat}]"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="¬Inst=Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="∀c⦂Component,k⦂ℤ·c∈to_unfold_c∧k∈1 ‥ M⇒{c ↦ k}∉ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="to_unfold_c_in;inst2pat_c⊆container"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀i⦂Component·i∈dom(inst2pat_c)⇒c_indexes(i)=inst2pat_c∼;((containers∪(id ⦂ ℙ(Component×Component)))[{i}] ◁ c_index)"> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="container∈ran(components) ⇸ ran(components)"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="ran(to_unfold_p_in)⊆dom(inst2pat_c)"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="container⊆containers"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="∀c⦂Component,m⦂ℙ(Component×ℤ)·c∈to_unfold_c∧m∈ran(c_indexes)⇒¬c∈dom(m)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="inst2pat_p[OPort]⊆OPort"> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_p" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·f∈Component ↔ Component∧container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="components;containers∼;components∼⊆(id ⦂ ℙ(Model×Model))"> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀m⦂Model·finite(components[{m}])"/> |
|
|
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="∀c⦂Component·c∈dom(to_unfold_c_in)⇒c_multiplicity(c)>0"/> |
|
|
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="finite(P)"/> |
|
|
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="components∼∈Component ⇸ Model"/> |
|
|
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="∀s⦂Component,c⦂Component·s ↦ c∈container⇒containers∼[{s}]⊂containers∼[{c}]"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="containers⊆container;(containers∪(id ⦂ ℙ(Component×Component)))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="ports∼∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ max(ran(c_multiplicity))⇒¬c_indexes(i){c ↦ k}∈ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_p_in∈(components;ports)[{Pat}] ↔ components[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="c_index∈dom(inst2pat_c) → ℕ"> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="to_unfold_p_in;inst2pat_c⊆ports∼"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ M)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="∀c⦂Component,i⦂Component,k⦂ℤ·c ↦ i∈to_unfold_c_in∧k∈1 ‥ M⇒c_indexes(i){c ↦ k}∉ran(c_indexes)"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="P=components[{Pat}]"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Inst≠Mdl"> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="to_unfold_c∩ran(inst2pat_c)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ran(c_multiplicity)≠(∅ ⦂ ℙ(ℤ))"/> |
|
|
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="c_indexes∈dom(inst2pat_c) ↣ (P ⇸ 1 ‥ max(ran(c_multiplicity)))"> |
|
|
<org.eventb.core.prIdent name="c_indexes" org.eventb.core.type="ℙ(Component×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c_in∈components[{Pat}] ↔ components[{Inst}]"/> |
|
|
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="inst2pat_c;container=container;inst2pat_c"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst2pat_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="∀c⦂Component·finite(containers∼[{c}])"> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="containers;containers⊆containers"> |
|
|
<org.eventb.core.prIdent name="containers" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∃f⦂ℙ(Component×Component)·container⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀c⦂Component·finite(to_unfold_c_in[{c}])"/> |
|
|
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="finite(components[{Pat}])"/> |
|
|
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀c⦂Component·finite(container∼[{c}])"> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="c∈dom(c_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="Inst∈Model ∖ Pattern"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="components∈Model ↔ Component"/> |
|
|
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="ports∈ran(components) ↔ Port"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.smt.core.externalSMT"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.exF"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.mngHyp"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="inst_2_pat_p/WD"/> |
|
|
<org.eventb.core.prProof name="unfold_p/inst_2_pat_p/INV"/> |
|
|
<org.eventb.core.prProof name="apply_pattern/inst_2_pat_p/INV"/> |
|
|
<org.eventb.core.prProof name="pat2inst_p/WD"/> |
|
|
<org.eventb.core.prProof name="unfold_p/pat2inst_p/INV"/> |
|
|
<org.eventb.core.prProof name="apply_pattern/pat2inst_p/INV"/> |
|
|
<org.eventb.core.prProof name="pat2inst_p_ty/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p4,p5"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤∧⊤"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(ports)∧ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pat∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_p/pat2inst_p_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p24" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p46,p47"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p46,p47"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p43" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p48"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p29" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p49"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p50"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p51"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p53" org.eventb.core.prHyps="p52"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p53" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p52"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Inst" org.eventb.core.prHyps="p52"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p55"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p30" org.eventb.core.prInfHyps="p56"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p26,p30"/> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p54" org.eventb.core.prHyps="p38,p10,p40,p6,p13,p34,p16,p31,p22,p27,p19,p44,p15,p11,p17,p41,p28,p45,p39,p35,p37,p12,p5,p3,p14,p7,p33,p8,p25,p26,p18,p32,p30,p9,p2,p42,p21,p23,p36,p4,p20,p1,p46,p47,p48,p49,p52,p55,p56"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="p57"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p58" org.eventb.core.prHyps="p37"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p59"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p57" org.eventb.core.prHyps="p52" org.eventb.core.prInfHyps="p60"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p60" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p61"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p61"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p62" org.eventb.core.prHyps="p57"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p62" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="p52"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p63" org.eventb.core.prHyps="p37"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p64"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p52" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p61"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p61"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="p57"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p65" org.eventb.core.prHyps="p37"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p66"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p66" org.eventb.core.prHyps="p37"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p26"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prIdent name="new_p" org.eventb.core.type="ℙ(ℤ×Port)"/> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/> |
|
|
<org.eventb.core.prIdent name="pat2inst_p" org.eventb.core.type="ℙ(Port×ℙ(ℤ×ℙ(ℤ×Port)))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="pat2inst_p∈({Inst} ⩤ ports)(Pat) → (ℕ ⇸ (ℕ ⇸ ({Inst} ⩤ ports)(Pat)))"/> |
|
|
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="ports{Inst ↦ ports(Inst)∪ran(new_p)}∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒p_multiplicity(m)∈ports(m) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="pat2inst_p∈ports(Inst)∪ran(new_p) → (ℕ ⇸ (ℕ ⇸ (ports{Inst ↦ ports(Inst)∪ran(new_p)})(Pat)))"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pat∈dom(p_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="p_multiplicity∈Pattern → (Port ⇸ ℕ)"/> |
|
|
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="Pat=Inst"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ⇸ components(Inst)"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="p_multiplicity(Pat)∈Port ⇸ ℤ"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/> |
|
|
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="pat2inst_p∈ports(Pat) → (ℕ ⇸ (ℕ ⇸ ports(Pat)))"/> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/> |
|
|
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="¬Pat=Inst"/> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="p∈dom(to_unfold_p_in)"/> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="to_unfold_p_in∈ports(Pat) ⇸ components(Inst)"/> |
|
|
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="new_p∈1 ‥ p_multiplicity(Inst)(p) ↣ Port ∖ union(ran(ports))"/> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="p∈OPort⇒ran(new_p)⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Inst))"/> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="p∈dom(p_multiplicity(Pat))"/> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="¬⊤"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m⦂Model·p_component(m)∈ports(m) → components(m)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="components∈Model → ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="pat2inst_p∈ports(Inst)∪ran(new_p) → (ℕ ⇸ (ℕ ⇸ ({Inst} ⩤ ports)(Pat)))"/> |
|
|
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="pat2inst_p∈ports(Inst)∪ran(new_p) → (ℕ ⇸ (ℕ ⇸ ports(Pat)))"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Inst∈dom(components)"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·finite(ports(m))"/> |
|
|
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="pat2inst_p∈ports(Pat) → (ℕ ⇸ (ℕ ⇸ ({Inst} ⩤ ports)(Pat)))"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="pat2inst_p∈(ports{Inst ↦ ports(Inst)∪ran(new_p)})(Pat) → (ℕ ⇸ (ℕ ⇸ (ports{Inst ↦ ports(Inst)∪ran(new_p)})(Pat)))"/> |
|
|
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="pat2inst_p∈ports(Inst)∪ran(new_p) → (ℕ ⇸ (ℕ ⇸ ports(Inst)∪ran(new_p)))"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="∀p⦂Port·p∈ports(Pat)⇒pat2inst_p(p)∈1 ‥ c_multiplicity(Pat)(p_component(Pat)(p)) ⇸ (1 ‥ p_multiplicity(Pat)(p) ↣ ports(Inst))"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Pat∈dom(ports{Inst ↦ ports(Inst)∪ran(new_p)})"/> |
|
|
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="pat2inst_p∈({Inst} ⩤ ports)(Pat) → (ℕ ⇸ (ℕ ⇸ (ports{Inst ↦ ports(Inst)∪ran(new_p)})(Pat)))"/> |
|
|
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="⊥"/> |
|
|
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="pat2inst_p∈ports(Pat) → (ℕ ⇸ (ℕ ⇸ ports(Inst)∪ran(new_p)))"/> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="p∈IPort⇒ran(new_p)⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="pat2inst_p∈ports(Inst) → (ℕ ⇸ (ℕ ⇸ ports(Inst)))"/> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="pat2inst_p∈({Inst} ⩤ ports)(Pat) → (ℕ ⇸ (ℕ ⇸ ports(Inst)∪ran(new_p)))"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="new_p∈1 ‥ p_multiplicity(Pat)(p) ↣ Port ∖ union(ran(ports))"/> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)"/> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="Pat∈dom(components)"/> |
|
|
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/> |
|
|
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="apply_pattern/pat2inst_p_ty/INV" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75" org.eventb.core.prSets="Component,Model,Port,Property"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p63" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p76,p77"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p76,p77"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p41" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p78"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p66" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p79"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p80"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p81"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p83" org.eventb.core.prHyps="p82"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p83" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84" org.eventb.core.prHyps="p82"> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Mdl" org.eventb.core.prHyps="p82"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p23" org.eventb.core.prInfHyps="p85"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p86"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p23,p6"/> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p84" org.eventb.core.prHyps="p34,p11,p72,p46,p12,p67,p14,p28,p35,p21,p64,p16,p73,p54,p51,p15,p39,p24,p74,p38,p69,p58,p19,p2,p50,p75,p40,p57,p1,p47,p25,p52,p37,p65,p49,p33,p53,p5,p45,p13,p8,p29,p9,p22,p23,p56,p36,p20,p59,p55,p18,p10,p70,p26,p6,p68,p3,p44,p4,p43,p32,p71,p27,p62,p61,p30,p42,p60,p48,p17,p7,p31,p76,p77,p78,p79,p82,p85,p86"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p88" org.eventb.core.prHyps="p87"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p88" org.eventb.core.prHyps="p33"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p89"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p87" org.eventb.core.prHyps="p82" org.eventb.core.prInfHyps="p90"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p90" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p91"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p91"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="p87"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p92" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="p82"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="p33"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p82" org.eventb.core.prHyps="p87" org.eventb.core.prInfHyps="p91"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p91"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p95" org.eventb.core.prHyps="p87"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p95" org.eventb.core.prHyps="p33"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p96"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p96" org.eventb.core.prHyps="p33"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p23"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="inst_props" org.eventb.core.type="ℙ(Property×Property)"/> |
|
|
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="new_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/> |
|
|
<org.eventb.core.prIdent name="pat2inst_p" org.eventb.core.type="ℙ(Port×ℙ(ℤ×ℙ(ℤ×Port)))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="pat2inst_p∈ports(Mdl)∪ran(new_ports) → (ℕ ⇸ (ℕ ⇸ (ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(Pat)))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="(p_multiplicity(Inst))[ports(Pat)]⊆{1}"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pat∈dom(ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="Pat∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="p_multiplicity∈Pattern → (Port ⇸ ℕ)"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="new_ports[OPort]⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="Pat=Mdl"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Mdl∈dom(container)"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="Mdl∈dom(components)"/> |
|
|
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c)]⊆dom(pat2inst_c)"/> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="inst_props∈Property ⇸ Property"/> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="dom(inst_ports)⊆dom(p_component(Inst) ▷ dom(inst_components))"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="inst_ports∼;p_component(Inst);inst_components⊆p_component(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="inst_components∈components(Inst) ⤔ components(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Mdl∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="¬⊤"/> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="Mdl∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="inst_ports∈ports(Inst) ⤔ ports(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="∀m⦂Model·p_component(m)∈ports(m) → components(m)"/> |
|
|
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="components∈Model → ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="new_ports[IPort]⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="pat2inst_p∈({Mdl} ⩤ ports)(Pat) → (ℕ ⇸ (ℕ ⇸ (ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(Pat)))"/> |
|
|
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="Inst∈dom(components)"/> |
|
|
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀m⦂Model·finite(ports(m))"/> |
|
|
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="Inst∈dom(container)"/> |
|
|
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/> |
|
|
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c)"/> |
|
|
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="⊥"/> |
|
|
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬Pat=Mdl"/> |
|
|
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="Inst∈dom(p_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)"/> |
|
|
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="pat2inst_p∈ports(Mdl) → (ℕ ⇸ (ℕ ⇸ ports(Mdl)))"/> |
|
|
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="Pat∈dom(components)"/> |
|
|
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="Pat∈dom(container)"/> |
|
|
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="(p_multiplicity(Inst))[ports(Mdl)]⊆{1}"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒p_multiplicity(m)∈ports(m) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="(container(Mdl))∼;inst_components∼;container(Inst)⊆inst_components∼"/> |
|
|
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="pat2inst_p∈({Mdl} ⩤ ports)(Pat) → (ℕ ⇸ (ℕ ⇸ ports(Mdl)∪ran(new_ports)))"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ⇸ components(Inst)"/> |
|
|
<org.eventb.core.prPred name="p95" org.eventb.core.predicate="pat2inst_p∈({Mdl} ⩤ ports)(Pat) → (ℕ ⇸ (ℕ ⇸ ({Mdl} ⩤ ports)(Pat)))"/> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/> |
|
|
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="pat2inst_p∈ports(Mdl)∪ran(new_ports) → (ℕ ⇸ (ℕ ⇸ ports(Pat)))"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="pat2inst_p∈ports(Pat) → (ℕ ⇸ (ℕ ⇸ ports(Pat)))"/> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="to_unfold_p_in∈ports(Pat) ⇸ components(Inst)"/> |
|
|
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="ports{Mdl ↦ ports(Mdl)∪ran(new_ports)}∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="inst_ports[IPort]⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)"/> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Inst))"/> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p96" org.eventb.core.predicate="pat2inst_p∈ports(Pat) → (ℕ ⇸ (ℕ ⇸ ({Mdl} ⩤ ports)(Pat)))"/> |
|
|
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="pat2inst_p∈ports(Mdl)∪ran(new_ports) → (ℕ ⇸ (ℕ ⇸ ports(Mdl)∪ran(new_ports)))"/> |
|
|
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[dom(to_unfold_c_in)]=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="pat2inst_p∈(ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(Pat) → (ℕ ⇸ (ℕ ⇸ (ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(Pat)))"/> |
|
|
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="∀p⦂Port·p∈ports(Pat)⇒pat2inst_p(p)∈1 ‥ c_multiplicity(Pat)(p_component(Pat)(p)) ⇸ (1 ‥ p_multiplicity(Pat)(p) ↣ ports(Inst))"/> |
|
|
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="inst_components∼;container(Inst);inst_components⊆container(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="pat2inst_p∈ports(Mdl)∪ran(new_ports) → (ℕ ⇸ (ℕ ⇸ ({Mdl} ⩤ ports)(Pat)))"/> |
|
|
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="new_ports∈ports(Inst) ∖ dom(inst_ports) ↣ Port ∖ union(ran(ports))"/> |
|
|
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="Inst∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="new_components∈components(Inst) ∖ dom(inst_components) ↣ Component ∖ union(ran(components))"/> |
|
|
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="inst_ports[OPort]⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="pat2inst_p∈ports(Pat) → (ℕ ⇸ (ℕ ⇸ ports(Mdl)∪ran(new_ports)))"/> |
|
|
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/> |
|
|
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="pat2inst_p_ty_raf/WD" org.eventb.core.confidence="0" org.eventb.core.prFresh="p" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10,p11"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p10,p11"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p7,p8"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p12"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p12" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p13" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p15" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p16"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p18"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p19"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees p)" org.eventb.core.prGoal="p17" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p20"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p20" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p22" org.eventb.core.prHyps="p21"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∧ goal" org.eventb.core.prGoal="p22" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p23"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p6"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p21" org.eventb.core.prHyps="p21"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p24"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p24" org.eventb.core.prHyps="p6"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name=")" org.eventb.core.prGoal="p25"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p25" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p1" org.eventb.core.prHyps="p1"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="*" org.eventb.core.prGoal="p26"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p26" org.eventb.core.prHyps="p2"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="+" org.eventb.core.prGoal="p27"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p27" org.eventb.core.prHyps="p4"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p28"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p28" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29"> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p29" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e2"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="," org.eventb.core.prGoal="p30"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p4"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="-" org.eventb.core.prGoal="p31"/> |
|
|
<org.eventb.core.prAnte name="." org.eventb.core.prGoal="p32"> |
|
|
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional image goal for p_component(Pat)" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p4"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p32"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p32" org.eventb.core.prHyps="p32"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="/" org.eventb.core.prGoal="p33"/> |
|
|
<org.eventb.core.prAnte name="0" org.eventb.core.prGoal="p34"> |
|
|
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional image goal for c_multiplicity(Pat)" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p35"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p34" org.eventb.core.prHyps="p35"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="1" org.eventb.core.prGoal="p36"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p1"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="hyp" org.eventb.core.prGoal="p1" org.eventb.core.prHyps="p1"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="2" org.eventb.core.prGoal="p37"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p37" org.eventb.core.prHyps="p3"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="3" org.eventb.core.prGoal="p38"/> |
|
|
<org.eventb.core.prAnte name="4" org.eventb.core.prGoal="p39"> |
|
|
<org.eventb.core.prRule name="r11" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional image goal for p_multiplicity(Pat)" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p3"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p40"> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="functional goal" org.eventb.core.prGoal="p39" org.eventb.core.prHyps="p40"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="5" org.eventb.core.prGoal="p41"> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="total function dom substitution in goal" org.eventb.core.prGoal="p41" org.eventb.core.prHyps="p5"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p42"> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prGoal="p42" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p29"> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p29" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
<org.eventb.core.prExprRef name=".subst" org.eventb.core.prRef="e2"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="pat2inst_p" org.eventb.core.type="ℙ(Port×ℙ(ℤ×ℙ(ℤ×Port)))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="p_multiplicity(Pat)∈Port ⇸ ℕ"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀p⦂Port·Pat∈dom(ports)∧ports∈Model ⇸ ℙ(Port)∧(p∈ports(Pat)⇒p∈dom(pat2inst_p)∧pat2inst_p∈Port ⇸ ℙ(ℤ × ℙ(ℤ × Port))∧Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧Pat∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)∧p∈dom(p_component(Pat))∧p_component(Pat)∈Port ⇸ Component∧p_component(Pat)(p)∈dom(c_multiplicity(Pat))∧c_multiplicity(Pat)∈Component ⇸ ℤ∧Pat∈dom(p_multiplicity)∧p_multiplicity∈Model ⇸ ℙ(Port × ℤ)∧p∈dom(p_multiplicity(Pat))∧p_multiplicity(Pat)∈Port ⇸ ℤ∧Inst∈dom(ports))"/> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="p_component(Pat)(p)∈dom(c_multiplicity(Pat))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="Inst∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℕ"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="pat2inst_p∈Port ⇸ ℙ(ℤ × ℙ(ℤ × Port))"/> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="p∈dom(p_component(Pat))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="Pat∈dom(p_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="Pat∈Model"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="p_multiplicity∈Pattern → (Port ⇸ ℕ)"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="p∈dom(pat2inst_p)∧pat2inst_p∈Port ⇸ ℙ(ℤ × ℙ(ℤ × Port))∧Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧Pat∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)∧p∈dom(p_component(Pat))∧p_component(Pat)∈Port ⇸ Component∧p_component(Pat)(p)∈dom(c_multiplicity(Pat))∧c_multiplicity(Pat)∈Component ⇸ ℤ∧Pat∈dom(p_multiplicity)∧p_multiplicity∈Model ⇸ ℙ(Port × ℤ)∧p∈dom(p_multiplicity(Pat))∧p_multiplicity(Pat)∈Port ⇸ ℤ∧Inst∈dom(ports)"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="Pat∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="p_multiplicity(Pat)∈Port ⇸ ℤ"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="p∈ports(Pat)⇒p∈dom(pat2inst_p)∧pat2inst_p∈Port ⇸ ℙ(ℤ × ℙ(ℤ × Port))∧Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧Pat∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)∧p∈dom(p_component(Pat))∧p_component(Pat)∈Port ⇸ Component∧p_component(Pat)(p)∈dom(c_multiplicity(Pat))∧c_multiplicity(Pat)∈Component ⇸ ℤ∧Pat∈dom(p_multiplicity)∧p_multiplicity∈Model ⇸ ℙ(Port × ℤ)∧p∈dom(p_multiplicity(Pat))∧p_multiplicity(Pat)∈Port ⇸ ℤ∧Inst∈dom(ports)"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="c_multiplicity(Pat)∈Component ⇸ ℤ"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="pat2inst_p∈ports(Pat) → (ℕ ⇸ (ℕ ⇸ ports(Pat)))"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="p∈dom(pat2inst_p)"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="p∈ports(Pat)"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="p_component(Pat)∈Port ⇸ Component"/> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="Inst∈Model"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="c_multiplicity∈Model ⇸ ℙ(Component × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="Pat∈dom(c_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="∀p⦂Port·⊤∧⊤∧(p∈ports(Pat)⇒p∈dom(pat2inst_p)∧pat2inst_p∈Port ⇸ ℙ(ℤ × ℙ(ℤ × Port))∧Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧Pat∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)∧p∈dom(p_component(Pat))∧p_component(Pat)∈Port ⇸ Component∧p_component(Pat)(p)∈dom(c_multiplicity(Pat))∧c_multiplicity(Pat)∈Component ⇸ ℤ∧Pat∈dom(p_multiplicity)∧p_multiplicity∈Model ⇸ ℙ(Port × ℤ)∧p∈dom(p_multiplicity(Pat))∧p_multiplicity(Pat)∈Port ⇸ ℤ∧Inst∈dom(ports))"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="∀p⦂Port·p∈ports(Pat)⇒p∈dom(pat2inst_p)∧pat2inst_p∈Port ⇸ ℙ(ℤ × ℙ(ℤ × Port))∧Pat∈dom(c_multiplicity)∧c_multiplicity∈Model ⇸ ℙ(Component × ℤ)∧Pat∈dom(p_component)∧p_component∈Model ⇸ ℙ(Port × Component)∧p∈dom(p_component(Pat))∧p_component(Pat)∈Port ⇸ Component∧p_component(Pat)(p)∈dom(c_multiplicity(Pat))∧c_multiplicity(Pat)∈Component ⇸ ℤ∧Pat∈dom(p_multiplicity)∧p_multiplicity∈Model ⇸ ℙ(Port × ℤ)∧p∈dom(p_multiplicity(Pat))∧p_multiplicity(Pat)∈Port ⇸ ℤ∧Inst∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="p∈dom(p_multiplicity(Pat))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prExpr name="e0" org.eventb.core.expression="ports(Pat)"/> |
|
|
<org.eventb.core.prExpr name="e1" org.eventb.core.expression="Pattern"/> |
|
|
<org.eventb.core.prExpr name="e2" org.eventb.core.expression="Model"/> |
|
|
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.isFunGoal"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.totalDom:2"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.conj:0"/> |
|
|
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.hyp"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r11" org.eventb.core.prRID="org.eventb.core.seqprover.funImgGoal"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="instanciate_pattern/pat2inst_p_ty/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p0" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p1,p2"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p1,p2"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p5" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p6"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p7"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p8"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="Port" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="Model" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="instanciate_pattern/pat2inst_p_ty_raf/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="p" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p4,p5"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p10"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p6" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p7"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p8" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p9"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p11"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p12"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees p)" org.eventb.core.prGoal="p10" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p13"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p13" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p15" org.eventb.core.prHyps="p14"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p15" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p17" org.eventb.core.prHyps="p16"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p17" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p19" org.eventb.core.prHyps="p18"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p19" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p21"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p20"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p22"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p23" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p24"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p24" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p26"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p16" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p20"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p25"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p27"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p27" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p28"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p28"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.0.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.0.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p30" org.eventb.core.prHyps="p29"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p30" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p18"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p31" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p32"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p32" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p34"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p29" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p33"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p18" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p14"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p22"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p35" org.eventb.core.prHyps="p1"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p36"> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p36" org.eventb.core.prHyps="p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p37"> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p29" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p33"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p22" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p25"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p25" org.eventb.core.prHyps="p14" org.eventb.core.prInfHyps="p27"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p27" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p28"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p28"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.0.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.0.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="c_mult_others" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="p_mult_others" org.eventb.core.type="ℙ(Port×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="(∅ ⦂ ℙ(ℤ×ℙ(ℤ×Port)))∈1 ‥ card(inst_components[{p_component(Pat)(p)}]) ⇸ (1 ‥ p_mult_others(p) ↣ ports(Inst))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="(∅ ⦂ ℙ(ℤ×ℙ(ℤ×Port)))∈1 ‥ c_mult_others(p_component(Pat)(p)) ⇸ (1 ‥ card(inst_ports[{p}]) ↣ ports(Inst))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="Pattern⊆Model"> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="p_component(Pat)(p)∈dom({pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="(∅ ⦂ ℙ(ℤ×ℙ(ℤ×Port)))∈1 ‥ (dom({pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}) ⩤ c_mult_others)(p_component(Pat)(p)) ⇸ (1 ‥ {pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}(p) ↣ ports(Inst))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="c_mult_others∈components(Pat) ∖ dom(inst_components) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀p⦂Port·p∈ports(Pat)⇒(∅ ⦂ ℙ(ℤ×ℙ(ℤ×Port)))∈1 ‥ (c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})(p_component(Pat)(p)) ⇸ (1 ‥ (p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])})(p) ↣ ports(Inst))"/> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="(∅ ⦂ ℙ(ℤ×ℙ(ℤ×Port)))∈1 ‥ c_mult_others(p_component(Pat)(p)) ⇸ (1 ‥ {pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}(p) ↣ ports(Inst))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="(∅ ⦂ ℙ(ℤ×ℙ(ℤ×Port)))∈1 ‥ {pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}(p_component(Pat)(p)) ⇸ (1 ‥ p_mult_others(p) ↣ ports(Inst))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="(∅ ⦂ ℙ(ℤ×ℙ(ℤ×Port)))∈1 ‥ (c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})(p_component(Pat)(p)) ⇸ (1 ‥ (p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])})(p) ↣ ports(Inst))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="p∈dom({pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])})"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="(∅ ⦂ ℙ(ℤ×ℙ(ℤ×Port)))∈1 ‥ {pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}(p_component(Pat)(p)) ⇸ (1 ‥ (dom({pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}) ⩤ p_mult_others)(p) ↣ ports(Inst))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="(∅ ⦂ ℙ(ℤ×ℙ(ℤ×Port)))∈1 ‥ {pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}(p_component(Pat)(p)) ⇸ (1 ‥ {pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}(p) ↣ ports(Inst))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="¬p_component(Pat)(p)∈dom({pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="⊥"/> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="¬p_component(Pat)(p)∈dom(inst_components)"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="(∅ ⦂ ℙ(ℤ×ℙ(ℤ×Port)))∈1 ‥ (dom({pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}) ⩤ c_mult_others)(p_component(Pat)(p)) ⇸ (1 ‥ (p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])})(p) ↣ ports(Inst))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="(∅ ⦂ ℙ(ℤ×ℙ(ℤ×Port)))∈1 ‥ c_mult_others(p_component(Pat)(p)) ⇸ (1 ‥ p_mult_others(p) ↣ ports(Inst))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="p∈ports(Pat)"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="(∅ ⦂ ℙ(ℤ×ℙ(ℤ×Port)))∈1 ‥ c_mult_others(p_component(Pat)(p)) ⇸ (1 ‥ (dom({pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}) ⩤ p_mult_others)(p) ↣ ports(Inst))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="¬p∈dom({pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])})"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀p⦂Port·p∈ports(Pat)⇒(ports(Pat) × {∅ ⦂ ℙ(ℤ×ℙ(ℤ×Port))})(p)∈1 ‥ (c_multiplicity{Pat ↦ c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}})(Pat)(p_component(Pat)(p)) ⇸ (1 ‥ (p_multiplicity{Pat ↦ p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}})(Pat)(p) ↣ ports(Inst))"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="p_mult_others∈ports(Pat) ∖ dom(inst_ports) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="¬p∈ports(Pat)"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="p∈ports(Pat)⇒(∅ ⦂ ℙ(ℤ×ℙ(ℤ×Port)))∈1 ‥ (c_mult_others{pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])})(p_component(Pat)(p)) ⇸ (1 ‥ (p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])})(p) ↣ ports(Inst))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="(∅ ⦂ ℙ(ℤ×ℙ(ℤ×Port)))∈1 ‥ {pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}(p_component(Pat)(p)) ⇸ (1 ‥ (p_mult_others{pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])})(p) ↣ ports(Inst))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="(∅ ⦂ ℙ(ℤ×ℙ(ℤ×Port)))∈1 ‥ card(inst_components[{p_component(Pat)(p)}]) ⇸ (1 ‥ card(inst_ports[{p}]) ↣ ports(Inst))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="(∅ ⦂ ℙ(ℤ×ℙ(ℤ×Port)))∈1 ‥ (dom({pc⦂Component·pc∈dom(inst_components) ∣ pc ↦ card(inst_components[{pc}])}) ⩤ c_mult_others)(p_component(Pat)(p)) ⇸ (1 ‥ (dom({pp⦂Port·pp∈ports(Pat) ∣ pp ↦ card(inst_ports[{pp}])}) ⩤ p_mult_others)(p) ↣ ports(Inst))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="p_component(Pat)(p)∈dom(inst_components)"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="¬⊤"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="instanciate_pattern/pat2inst_p/WD" org.eventb.core.confidence="1000" org.eventb.core.prFresh="" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2" org.eventb.core.prSets="Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p3" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p4,p5"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p4,p5"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p6"> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p6" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p11"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p7" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p8"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p9" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p10"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊤ goal" org.eventb.core.prGoal="p11" org.eventb.core.prHyps=""/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="⊤∧⊤"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="⊤"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Port=IPort∪OPort"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="Pat∈dom(ports)∧ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="partition(Port,IPort,OPort)"> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="Pat∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"> |
|
|
<org.eventb.core.prIdent name="Component" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.trueGoal"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="unfold_p/pat2inst_p_ty_raf/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="p0" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57" org.eventb.core.prSets="Component,Model,Port"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p47" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p58,p59"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p58,p59"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p62"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p33" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p60"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p50" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p61"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p63"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p64"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees p0)" org.eventb.core.prGoal="p62" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p65"> |
|
|
<org.eventb.core.prIdent name="p0" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p65" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p67" org.eventb.core.prHyps="p66"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p67" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p69" org.eventb.core.prHyps="p68"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p69" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="p70"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in (ports{Inst ↦ ports(Inst)∪ran(new_p)})(Pat)" org.eventb.core.prHyps="p66"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p70,p72"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p66"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with p0=p" org.eventb.core.prGoal="p71" org.eventb.core.prHyps="p68"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p74"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p72" org.eventb.core.prInfHyps="p73"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p72"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Inst" org.eventb.core.prGoal="p74" org.eventb.core.prHyps="p70"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p77"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p75"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p76"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p43,p51"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p77" org.eventb.core.prHyps="p26,p8,p54,p35,p9,p52,p11,p21,p27,p16,p48,p13,p55,p42,p39,p12,p30,p19,p56,p29,p53,p45,p14,p2,p38,p57,p31,p44,p1,p36,p20,p40,p28,p49,p37,p25,p41,p4,p34,p10,p5,p23,p6,p17,p18,p43,p22,p51,p7,p3,p32,p15,p46,p24,p58,p59,p60,p61,p68,p70,p72,p73,p75,p76"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p78,p79"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p66"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in hyp" org.eventb.core.prHyps="p25"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p79" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p80"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p80"/> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p78" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p81"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p81" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p82"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p82"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p83" org.eventb.core.prHyps="p78"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p83" org.eventb.core.prHyps="p4"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in (ports{Inst ↦ ports(Inst)∪ran(new_p)})(Pat)" org.eventb.core.prHyps="p66"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p70,p72"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p66"/> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p70" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p82"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p82"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p78,p79"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p66"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in hyp" org.eventb.core.prHyps="p25"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p79" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p80"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p80"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with p0=p" org.eventb.core.prGoal="p84" org.eventb.core.prHyps="p68"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p86"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p80" org.eventb.core.prInfHyps="p85"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT1" org.eventb.core.prHyps="p80"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0.1.1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0.1.1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p88" org.eventb.core.prHyps="p87"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p88" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p89" org.eventb.core.prHyps="p70"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p89" org.eventb.core.prHyps="p18"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p90"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in (ports{Inst ↦ ports(Inst)∪ran(new_p)})(Pat)" org.eventb.core.prHyps="p66"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p70,p72"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p66"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Inst" org.eventb.core.prGoal="p90" org.eventb.core.prHyps="p70"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p91"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p43" org.eventb.core.prInfHyps="p75"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p51" org.eventb.core.prInfHyps="p76"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p43,p51"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p91" org.eventb.core.prHyps="p26,p8,p54,p35,p9,p52,p11,p21,p27,p16,p48,p13,p55,p42,p39,p12,p30,p19,p56,p29,p53,p45,p14,p2,p38,p57,p31,p44,p1,p36,p20,p40,p28,p49,p37,p25,p41,p4,p34,p10,p5,p23,p6,p17,p18,p43,p22,p51,p7,p3,p32,p15,p46,p24,p58,p59,p60,p61,p87,p70,p72,p75,p76"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p78,p79"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p66"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in hyp" org.eventb.core.prHyps="p25"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p79" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p80"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p80"/> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p78" org.eventb.core.prHyps="p70" org.eventb.core.prInfHyps="p81"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p81" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p82"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p82"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="p78"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p92" org.eventb.core.prHyps="p18"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p93"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p93" org.eventb.core.prHyps="p4"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p94"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in (ports{Inst ↦ ports(Inst)∪ran(new_p)})(Pat)" org.eventb.core.prHyps="p66"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p70,p72"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p66"/> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p70" org.eventb.core.prHyps="p78" org.eventb.core.prInfHyps="p82"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p82"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p78,p79"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p66"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in hyp" org.eventb.core.prHyps="p25"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p79" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p80"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p80"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0.1.1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0.1.1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prIdent name="new_p" org.eventb.core.type="ℙ(ℤ×Port)"/> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/> |
|
|
<org.eventb.core.prIdent name="pat2inst_p" org.eventb.core.type="ℙ(Port×ℙ(ℤ×ℙ(ℤ×Port)))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p63" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="pat2inst_p(p){c_index(to_unfold_p_in(p)) ↦ new_p}∈1 ‥ c_multiplicity(Inst)((p_component(Inst)∪(ran(new_p) × {to_unfold_p_in(p)}))(p)) ⇸ (1 ‥ p_multiplicity(Inst)(p) ↣ ports(Inst)∪ran(new_p))"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒p_multiplicity(m)∈ports(m) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="Pat∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="Pat∈dom(p_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="pat2inst_p(p){c_index(to_unfold_p_in(p)) ↦ new_p}∈1 ‥ c_multiplicity(Pat)(p_component(Pat)(p)) ⇸ (1 ‥ p_multiplicity(Pat)(p) ↣ ports(Inst)∪ran(new_p))"/> |
|
|
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="pat2inst_p(p){c_index(to_unfold_p_in(p)) ↦ new_p}∈1 ‥ c_multiplicity(Pat)((p_component(Inst)∪(ran(new_p) × {to_unfold_p_in(p)}))(p)) ⇸ (1 ‥ p_multiplicity(Pat)(p) ↣ ports(Inst)∪ran(new_p))"/> |
|
|
<org.eventb.core.prPred name="p9" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="p_multiplicity∈Pattern → (Port ⇸ ℕ)"/> |
|
|
<org.eventb.core.prPred name="p70" org.eventb.core.predicate="Pat=Inst"/> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·container(m)∈components(m) ⇸ components(m)"/> |
|
|
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="({p} ⩤ pat2inst_p)(p0)∈1 ‥ c_multiplicity(Pat)((p_component(Inst)∪(ran(new_p) × {to_unfold_p_in(p)}))(p0)) ⇸ (1 ‥ p_multiplicity(Pat)(p0) ↣ ports(Inst)∪ran(new_p))"> |
|
|
<org.eventb.core.prIdent name="p0" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀p0⦂Port·p0∈(ports{Inst ↦ ports(Inst)∪ran(new_p)})(Pat)⇒(pat2inst_p{p ↦ pat2inst_p(p){c_index(to_unfold_p_in(p)) ↦ new_p}})(p0)∈1 ‥ c_multiplicity(Pat)((p_component{Inst ↦ p_component(Inst)∪(ran(new_p) × {to_unfold_p_in(p)})})(Pat)(p0)) ⇸ (1 ‥ p_multiplicity(Pat)(p0) ↣ ports(Inst)∪ran(new_p))"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/> |
|
|
<org.eventb.core.prPred name="p13" org.eventb.core.predicate="to_unfold_c_in∈components(Pat) ⇸ components(Inst)"/> |
|
|
<org.eventb.core.prPred name="p72" org.eventb.core.predicate="p0∈ports(Inst)∪ran(new_p)"> |
|
|
<org.eventb.core.prIdent name="p0" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="p0∈ports(Pat)"> |
|
|
<org.eventb.core.prIdent name="p0" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="({p} ⩤ pat2inst_p)(p0)∈1 ‥ c_multiplicity(Pat)((p_component{Inst ↦ p_component(Inst)∪(ran(new_p) × {to_unfold_p_in(p)})})(Pat)(p0)) ⇸ (1 ‥ p_multiplicity(Pat)(p0) ↣ ports(Inst)∪ran(new_p))"> |
|
|
<org.eventb.core.prIdent name="p0" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p15" org.eventb.core.predicate="p_multiplicity(Pat)∈Port ⇸ ℤ"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="c_multiplicity∈Pattern → (Component ⇸ ℕ)"/> |
|
|
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="ports∈Model ⇸ ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="pat2inst_p∈ports(Pat) → (ℕ ⇸ (ℕ ⇸ ports(Pat)))"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="∀c⦂Component·c∈dom(c_index)⇒c_index(c)∈1 ‥ c_multiplicity(Pat)(to_clone_c(c))"/> |
|
|
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="¬Pat=Inst"/> |
|
|
<org.eventb.core.prPred name="p20" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c)]⊆dom(pat2inst_c)"/> |
|
|
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="p∈ports(Pat)"/> |
|
|
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="p∈ports(Inst)∪ran(new_p)"/> |
|
|
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="(pat2inst_p{p ↦ pat2inst_p(p){c_index(to_unfold_p_in(p)) ↦ new_p}})(p0)∈1 ‥ c_multiplicity(Pat)((p_component{Inst ↦ p_component(Inst)∪(ran(new_p) × {to_unfold_p_in(p)})})(Pat)(p0)) ⇸ (1 ‥ p_multiplicity(Pat)(p0) ↣ ports(Inst)∪ran(new_p))"> |
|
|
<org.eventb.core.prIdent name="p0" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p69" org.eventb.core.predicate="pat2inst_p(p){c_index(to_unfold_p_in(p)) ↦ new_p}∈1 ‥ c_multiplicity(Pat)((p_component{Inst ↦ p_component(Inst)∪(ran(new_p) × {to_unfold_p_in(p)})})(Pat)(p0)) ⇸ (1 ‥ p_multiplicity(Pat)(p0) ↣ ports(Inst)∪ran(new_p))"> |
|
|
<org.eventb.core.prIdent name="p0" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p21" org.eventb.core.predicate="∀m⦂Model·∃f⦂ℙ(Component×Component)·container(m)⊆f∧f;f⊆f∧(id ⦂ ℙ(Component×Component))∩f=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p22" org.eventb.core.predicate="p∈dom(to_unfold_p_in)"/> |
|
|
<org.eventb.core.prPred name="p23" org.eventb.core.predicate="to_unfold_p_in∈ports(Pat) ⇸ components(Inst)"/> |
|
|
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="properties∈Component ↔ Property"> |
|
|
<org.eventb.core.prIdent name="Property" org.eventb.core.type="ℙ(Property)"/> |
|
|
<org.eventb.core.prIdent name="properties" org.eventb.core.type="ℙ(Component×Property)"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="new_p∈1 ‥ p_multiplicity(Inst)(p) ↣ Port ∖ union(ran(ports))"/> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="p∈OPort⇒ran(new_p)⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p58" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="p0∈(ports{Inst ↦ ports(Inst)∪ran(new_p)})(Pat)⇒(pat2inst_p{p ↦ pat2inst_p(p){c_index(to_unfold_p_in(p)) ↦ new_p}})(p0)∈1 ‥ c_multiplicity(Pat)((p_component{Inst ↦ p_component(Inst)∪(ran(new_p) × {to_unfold_p_in(p)})})(Pat)(p0)) ⇸ (1 ‥ p_multiplicity(Pat)(p0) ↣ ports(Inst)∪ran(new_p))"> |
|
|
<org.eventb.core.prIdent name="p0" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p92" org.eventb.core.predicate="({p} ⩤ pat2inst_p)(p0)∈1 ‥ c_multiplicity(Pat)(({Inst} ⩤ p_component)(Pat)(p0)) ⇸ (1 ‥ p_multiplicity(Pat)(p0) ↣ ports(Inst)∪ran(new_p))"> |
|
|
<org.eventb.core.prIdent name="p0" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="ports∈Model → ℙ(Port)"/> |
|
|
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="pat2inst_p(p0)∈1 ‥ c_multiplicity(Pat)(({Inst} ⩤ p_component)(Pat)(p0)) ⇸ (1 ‥ p_multiplicity(Pat)(p0) ↣ ports(Inst)∪ran(new_p))"> |
|
|
<org.eventb.core.prIdent name="p0" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p27" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p28" org.eventb.core.predicate="(container(Pat))[dom(to_unfold_c_in)]⊆dom(pat2inst_c)"/> |
|
|
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="pat2inst_p(p){c_index(to_unfold_p_in(p)) ↦ new_p}∈1 ‥ c_multiplicity(Pat)(({Inst} ⩤ p_component)(Pat)(p0)) ⇸ (1 ‥ p_multiplicity(Pat)(p0) ↣ ports(Inst)∪ran(new_p))"> |
|
|
<org.eventb.core.prIdent name="p0" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="pat2inst_c∈components(Pat) ⇸ (ℕ ⇸ components(Inst))"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀p0⦂Port·p0∈(ports{Inst ↦ ports(Inst)∪ran(new_p)})(Pat)⇒(pat2inst_p{p ↦ pat2inst_p(p){c_index(to_unfold_p_in(p)) ↦ new_p}})(p0)∈1 ‥ c_multiplicity(Pat)((p_component{Inst ↦ p_component(Inst)∪(ran(new_p) × {to_unfold_p_in(p)})})(Pat)(p0)) ⇸ (1 ‥ p_multiplicity(Pat)(p0) ↣ (ports{Inst ↦ ports(Inst)∪ran(new_p)})(Inst))"/> |
|
|
<org.eventb.core.prPred name="p30" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/> |
|
|
<org.eventb.core.prPred name="p31" org.eventb.core.predicate="container∈Model ⇸ ℙ(Component × Component)"/> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="p∈dom(p_multiplicity(Pat))"/> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="¬⊤"/> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="∀m⦂Model·p_component(m)∈ports(m) → components(m)"/> |
|
|
<org.eventb.core.prPred name="p35" org.eventb.core.predicate="components∈Model → ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p36" org.eventb.core.predicate="to_unfold_c∩ran(to_clone_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[dom(to_unfold_c_in)]=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p38" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p68" org.eventb.core.predicate="p0=p"> |
|
|
<org.eventb.core.prIdent name="p0" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="pat2inst_p(p){c_index(to_unfold_p_in(p)) ↦ new_p}∈1 ‥ c_multiplicity(Pat)((p_component(Inst)∪(ran(new_p) × {to_unfold_p_in(p)}))(p0)) ⇸ (1 ‥ p_multiplicity(Pat)(p0) ↣ ports(Inst)∪ran(new_p))"> |
|
|
<org.eventb.core.prIdent name="p0" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p90" org.eventb.core.predicate="pat2inst_p(p0)∈1 ‥ c_multiplicity(Pat)((p_component(Inst)∪(ran(new_p) × {to_unfold_p_in(p)}))(p0)) ⇸ (1 ‥ p_multiplicity(Pat)(p0) ↣ ports(Inst)∪ran(new_p))"> |
|
|
<org.eventb.core.prIdent name="p0" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p39" org.eventb.core.predicate="Inst∈dom(components)"/> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="(container(Pat))∼[ran(to_clone_c)]∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="∀m⦂Model·finite(ports(m))"/> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p84" org.eventb.core.predicate="pat2inst_p(p){c_index(to_unfold_p_in(p)) ↦ new_p}∈1 ‥ c_multiplicity(Pat)(p_component(Pat)(p0)) ⇸ (1 ‥ p_multiplicity(Pat)(p0) ↣ ports(Inst)∪ran(new_p))"> |
|
|
<org.eventb.core.prIdent name="p0" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀p⦂Port·p∈ports(Pat)⇒pat2inst_p(p)∈1 ‥ c_multiplicity(Pat)(p_component(Pat)(p)) ⇸ (1 ‥ p_multiplicity(Pat)(p) ↣ ports(Inst))"/> |
|
|
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/> |
|
|
<org.eventb.core.prPred name="p45" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c)"/> |
|
|
<org.eventb.core.prPred name="p94" org.eventb.core.predicate="pat2inst_p(p0)∈1 ‥ c_multiplicity(Pat)(p_component(Pat)(p0)) ⇸ (1 ‥ p_multiplicity(Pat)(p0) ↣ ports(Inst)∪ran(new_p))"> |
|
|
<org.eventb.core.prIdent name="p0" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="∀p⦂Port·p∈ports(Inst)⇒pat2inst_p(p)∈1 ‥ c_multiplicity(Inst)(p_component(Inst)(p)) ⇸ (1 ‥ p_multiplicity(Inst)(p) ↣ ports(Inst))"/> |
|
|
<org.eventb.core.prPred name="p60" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="⊥"/> |
|
|
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="pat2inst_p(p0)∈1 ‥ c_multiplicity(Inst)((p_component(Inst)∪(ran(new_p) × {to_unfold_p_in(p)}))(p0)) ⇸ (1 ‥ p_multiplicity(Inst)(p0) ↣ ports(Inst)∪ran(new_p))"> |
|
|
<org.eventb.core.prIdent name="p0" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="p∈IPort⇒ran(new_p)⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p47" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="dom(to_unfold_c_in)∩(container(Pat))∼[to_unfold_c]=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p50" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="p0∈(ports{Inst ↦ ports(Inst)∪ran(new_p)})(Pat)"> |
|
|
<org.eventb.core.prIdent name="p0" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="new_p∈1 ‥ p_multiplicity(Pat)(p) ↣ Port ∖ union(ran(ports))"/> |
|
|
<org.eventb.core.prPred name="p79" org.eventb.core.predicate="p0∈({Inst} ⩤ ports)(Pat)"> |
|
|
<org.eventb.core.prIdent name="p0" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)"/> |
|
|
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="¬p0=p"> |
|
|
<org.eventb.core.prIdent name="p0" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p54" org.eventb.core.predicate="Inst∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="Pat∈dom(components)"/> |
|
|
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="to_unfold_c⊆components(Pat)"/> |
|
|
<org.eventb.core.prPred name="p57" org.eventb.core.predicate="Pat∈dom(container)"/> |
|
|
<org.eventb.core.prReas name="r5" org.eventb.core.prRID="org.eventb.core.seqprover.funOvr:1"/> |
|
|
<org.eventb.core.prReas name="r6" org.eventb.core.prRID="org.eventb.core.seqprover.eq:1"/> |
|
|
<org.eventb.core.prReas name="r10" org.eventb.core.prRID="org.eventb.core.seqprover.falseHyp"/> |
|
|
<org.eventb.core.prReas name="r3" org.eventb.core.prRID="org.eventb.core.seqprover.allI"/> |
|
|
<org.eventb.core.prReas name="r7" org.eventb.core.prRID="com.clearsy.atelierb.provers.core.externalML:1"/> |
|
|
<org.eventb.core.prReas name="r8" org.eventb.core.prRID="org.eventb.core.seqprover.funImgSimplifies:0"/> |
|
|
<org.eventb.core.prReas name="r2" org.eventb.core.prRID="org.eventb.core.seqprover.typeRewrites:1"/> |
|
|
<org.eventb.core.prReas name="r4" org.eventb.core.prRID="org.eventb.core.seqprover.impI"/> |
|
|
<org.eventb.core.prReas name="r0" org.eventb.core.prRID="org.eventb.core.seqprover.partitionRewrites"/> |
|
|
<org.eventb.core.prReas name="r9" org.eventb.core.prRID="org.eventb.core.seqprover.genMPL3"/> |
|
|
<org.eventb.core.prReas name="r1" org.eventb.core.prRID="org.eventb.core.seqprover.autoRewritesL4:0"/> |
|
|
</org.eventb.core.prProof> |
|
|
<org.eventb.core.prProof name="apply_pattern/pat2inst_p_ty_raf/INV" org.eventb.core.confidence="0" org.eventb.core.prFresh="p" org.eventb.core.prGoal="p0" org.eventb.core.prHyps="p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73" org.eventb.core.prSets="Component,Model,Port,Property"> |
|
|
<org.eventb.core.lang name="L"/> |
|
|
<org.eventb.core.prRule name="r0" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Partition rewrites in hyp (partition(Port,IPort,OPort))" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p61" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p74,p75"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p74,p75"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p39" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p76"/> |
|
|
<org.eventb.core.prHypAction name="REWRITE1" org.eventb.core.prHidden="p64" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p77"/> |
|
|
<org.eventb.core.prRule name="r2" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="type rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p78"/> |
|
|
<org.eventb.core.prHypAction name="HIDE1" org.eventb.core.prHyps="p79"/> |
|
|
<org.eventb.core.prRule name="r3" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="∀ goal (frees p)" org.eventb.core.prGoal="p0" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p80"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
<org.eventb.core.prRule name="r4" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⇒ goal" org.eventb.core.prGoal="p80" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p82" org.eventb.core.prHyps="p81"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p82" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p84" org.eventb.core.prHyps="p83"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p84" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p86" org.eventb.core.prHyps="p85"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in (ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(Pat)" org.eventb.core.prHyps="p81"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p83,p87"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p81"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Mdl" org.eventb.core.prGoal="p86" org.eventb.core.prHyps="p83"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p90"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p88"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p89"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p54,p6"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Inst=Mdl" org.eventb.core.prGoal="p90" org.eventb.core.prHyps="p85"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p101"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p91"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p92"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p93"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p94"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p95"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p96"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p97"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p98"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p88" org.eventb.core.prInfHyps="p99"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p89" org.eventb.core.prInfHyps="p100"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT10" org.eventb.core.prHyps="p34,p57,p9,p68,p42,p26,p29,p58,p88,p89"/> |
|
|
<org.eventb.core.prRule name="r7" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ML" org.eventb.core.prGoal="p101" org.eventb.core.prHyps="p32,p10,p70,p44,p11,p65,p13,p27,p33,p20,p62,p15,p71,p52,p49,p14,p37,p23,p72,p36,p67,p56,p18,p2,p48,p73,p38,p55,p1,p45,p24,p50,p35,p63,p47,p31,p51,p5,p43,p12,p7,p28,p8,p21,p22,p54,p34,p19,p57,p53,p17,p9,p68,p25,p6,p66,p3,p42,p4,p41,p30,p69,p26,p60,p59,p29,p40,p58,p46,p16,p74,p75,p76,p77,p83,p85,p87,p88,p89,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100"> |
|
|
<org.eventb.core.prString name=".arg" org.eventb.core.prSValue="0;1:500"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p102,p103"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p81"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in hyp" org.eventb.core.prHyps="p31"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p103" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p104"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p104"/> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p102" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p105"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p105" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p106"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p106"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p108" org.eventb.core.prHyps="p107"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p108" org.eventb.core.prHyps="p31"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p109"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in (ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(Pat)" org.eventb.core.prHyps="p81"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p83,p87"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p81"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Pat=Mdl" org.eventb.core.prGoal="p109" org.eventb.core.prHyps="p83"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p110"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p88"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p89"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT2" org.eventb.core.prHyps="p54,p6"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p102,p103"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p81"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in hyp" org.eventb.core.prHyps="p31"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p103" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p104"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p104"/> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p102" org.eventb.core.prHyps="p83" org.eventb.core.prInfHyps="p105"/> |
|
|
<org.eventb.core.prRule name="r1" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="simplification rewrites" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p105" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p106"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p106"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p111" org.eventb.core.prHyps="p102"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in goal" org.eventb.core.prGoal="p111" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p112" org.eventb.core.prHyps="p85"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p112" org.eventb.core.prHyps="p5"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p113"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in (ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(Pat)" org.eventb.core.prHyps="p81"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p83,p87"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p81"/> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p83" org.eventb.core.prHyps="p102" org.eventb.core.prInfHyps="p106"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p106"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p102,p103"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p81"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in hyp" org.eventb.core.prHyps="p31"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p103" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p104"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p104"/> |
|
|
<org.eventb.core.prRule name="r6" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="eh with Inst=Mdl" org.eventb.core.prHyps="p85"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF0" org.eventb.core.prHyps="p54" org.eventb.core.prInfHyps="p114"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF1" org.eventb.core.prHyps="p34" org.eventb.core.prInfHyps="p91"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF2" org.eventb.core.prHyps="p57" org.eventb.core.prInfHyps="p92"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF3" org.eventb.core.prHyps="p9" org.eventb.core.prInfHyps="p93"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF4" org.eventb.core.prHyps="p68" org.eventb.core.prInfHyps="p94"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF5" org.eventb.core.prHyps="p6" org.eventb.core.prInfHyps="p115"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF6" org.eventb.core.prHyps="p42" org.eventb.core.prInfHyps="p95"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF7" org.eventb.core.prHyps="p26" org.eventb.core.prInfHyps="p96"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF8" org.eventb.core.prHyps="p29" org.eventb.core.prInfHyps="p97"/> |
|
|
<org.eventb.core.prHypAction name="FORWARD_INF9" org.eventb.core.prHyps="p58" org.eventb.core.prInfHyps="p98"/> |
|
|
<org.eventb.core.prHypAction name="DESELECT10" org.eventb.core.prHyps="p54,p34,p57,p9,p68,p6,p42,p26,p29,p58"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0.1.1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prGoal="p116" org.eventb.core.prHyps="p107"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p116" org.eventb.core.prHyps="p5"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p117"> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in goal" org.eventb.core.prGoal="p117" org.eventb.core.prHyps="p31"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prGoal="p118"> |
|
|
<org.eventb.core.prRule name="r5" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="ovr in (ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(Pat)" org.eventb.core.prHyps="p81"> |
|
|
<org.eventb.core.prAnte name="'" org.eventb.core.prHyps="p83,p87"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p81"/> |
|
|
<org.eventb.core.prRule name="r9" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="generalized MP" org.eventb.core.prHyps=""> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p83" org.eventb.core.prHyps="p102" org.eventb.core.prInfHyps="p106"/> |
|
|
<org.eventb.core.prRule name="r10" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="⊥ hyp" org.eventb.core.prHyps="p106"/> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prAnte name="(" org.eventb.core.prHyps="p102,p103"> |
|
|
<org.eventb.core.prHypAction name="HIDE0" org.eventb.core.prHyps="p81"/> |
|
|
<org.eventb.core.prRule name="r8" org.eventb.core.confidence="1000" org.eventb.core.prDisplay="Functional image simplification in hyp" org.eventb.core.prHyps="p31"> |
|
|
<org.eventb.core.prAnte name="'"> |
|
|
<org.eventb.core.prHypAction name="REWRITE0" org.eventb.core.prHidden="p103" org.eventb.core.prHyps="" org.eventb.core.prInfHyps="p104"/> |
|
|
<org.eventb.core.prHypAction name="SELECT1" org.eventb.core.prHyps="p104"/> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0.1.1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.1.1"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue="1.0.1.1.0"/> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
</org.eventb.core.prRule> |
|
|
</org.eventb.core.prAnte> |
|
|
<org.eventb.core.prString name=".pos" org.eventb.core.prSValue=""/> |
|
|
</org.eventb.core.prRule> |
|
|
<org.eventb.core.prIdent name="IPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Inst" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Mdl" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="OPort" org.eventb.core.type="ℙ(Port)"/> |
|
|
<org.eventb.core.prIdent name="Pat" org.eventb.core.type="Model"/> |
|
|
<org.eventb.core.prIdent name="Pattern" org.eventb.core.type="ℙ(Model)"/> |
|
|
<org.eventb.core.prIdent name="c_index" org.eventb.core.type="ℙ(Component×ℤ)"/> |
|
|
<org.eventb.core.prIdent name="c_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Component×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="components" org.eventb.core.type="ℙ(Model×ℙ(Component))"/> |
|
|
<org.eventb.core.prIdent name="container" org.eventb.core.type="ℙ(Model×ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prIdent name="inst_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="inst_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="inst_props" org.eventb.core.type="ℙ(Property×Property)"/> |
|
|
<org.eventb.core.prIdent name="new_components" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="new_ports" org.eventb.core.type="ℙ(Port×Port)"/> |
|
|
<org.eventb.core.prIdent name="p_component" org.eventb.core.type="ℙ(Model×ℙ(Port×Component))"/> |
|
|
<org.eventb.core.prIdent name="p_multiplicity" org.eventb.core.type="ℙ(Model×ℙ(Port×ℤ))"/> |
|
|
<org.eventb.core.prIdent name="pat2inst_c" org.eventb.core.type="ℙ(Component×ℙ(ℤ×Component))"/> |
|
|
<org.eventb.core.prIdent name="pat2inst_p" org.eventb.core.type="ℙ(Port×ℙ(ℤ×ℙ(ℤ×Port)))"/> |
|
|
<org.eventb.core.prIdent name="ports" org.eventb.core.type="ℙ(Model×ℙ(Port))"/> |
|
|
<org.eventb.core.prIdent name="to_clone_c" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c" org.eventb.core.type="ℙ(Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_c_in" org.eventb.core.type="ℙ(Component×Component)"/> |
|
|
<org.eventb.core.prIdent name="to_unfold_p_in" org.eventb.core.type="ℙ(Port×Component)"/> |
|
|
<org.eventb.core.prPred name="p2" org.eventb.core.predicate="to_unfold_c∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p3" org.eventb.core.predicate="p_multiplicity∈Model ⇸ ℙ(Port × ℤ)"/> |
|
|
<org.eventb.core.prPred name="p4" org.eventb.core.predicate="Inst∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p5" org.eventb.core.predicate="p_component∈Model → (Port ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p6" org.eventb.core.predicate="(p_multiplicity(Inst))[ports(Pat)]⊆{1}"/> |
|
|
<org.eventb.core.prPred name="p8" org.eventb.core.predicate="Pat∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p10" org.eventb.core.predicate="Pat∈Pattern"/> |
|
|
<org.eventb.core.prPred name="p87" org.eventb.core.predicate="p∈ports(Mdl)∪ran(new_ports)"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p112" org.eventb.core.predicate="pat2inst_p(p)∈1 ‥ c_multiplicity(Pat)(({Mdl} ⩤ p_component)(Pat)(p)) ⇸ (1 ‥ p_multiplicity(Pat)(p) ↣ ports(Mdl)∪ran(new_ports))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p11" org.eventb.core.predicate="∀m⦂Model·finite(components(m))"/> |
|
|
<org.eventb.core.prPred name="p12" org.eventb.core.predicate="p_multiplicity∈Pattern → (Port ⇸ ℕ)"/> |
|
|
<org.eventb.core.prPred name="p14" org.eventb.core.predicate="to_clone_c∈components(Inst) ⇸ components(Pat)"/> |
|
|
<org.eventb.core.prPred name="p16" org.eventb.core.predicate="new_ports[OPort]⊆OPort"/> |
|
|
<org.eventb.core.prPred name="p83" org.eventb.core.predicate="Pat=Mdl"/> |
|
|
<org.eventb.core.prPred name="p17" org.eventb.core.predicate="Mdl∈dom(container)"/> |
|
|
<org.eventb.core.prPred name="p18" org.eventb.core.predicate="dom(to_unfold_c_in)∩dom(pat2inst_c)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p19" org.eventb.core.predicate="Mdl∈dom(components)"/> |
|
|
<org.eventb.core.prPred name="p88" org.eventb.core.predicate="∀p⦂Port·p∈ports(Mdl)⇒pat2inst_p(p)∈1 ‥ c_multiplicity(Mdl)(p_component(Mdl)(p)) ⇸ (1 ‥ p_multiplicity(Mdl)(p) ↣ ports(Inst))"/> |
|
|
<org.eventb.core.prPred name="p93" org.eventb.core.predicate="(container(Mdl))∼;inst_components∼;container(Mdl)⊆inst_components∼"/> |
|
|
<org.eventb.core.prPred name="p118" org.eventb.core.predicate="pat2inst_p(p)∈1 ‥ c_multiplicity(Pat)(p_component(Pat)(p)) ⇸ (1 ‥ p_multiplicity(Pat)(p) ↣ ports(Inst))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p77" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p24" org.eventb.core.predicate="(container(Pat))[dom(pat2inst_c)]⊆dom(pat2inst_c)"/> |
|
|
<org.eventb.core.prPred name="p25" org.eventb.core.predicate="inst_props∈Property ⇸ Property"/> |
|
|
<org.eventb.core.prPred name="p26" org.eventb.core.predicate="dom(inst_ports)⊆dom(p_component(Inst) ▷ dom(inst_components))"/> |
|
|
<org.eventb.core.prPred name="p29" org.eventb.core.predicate="inst_ports∼;p_component(Inst);inst_components⊆p_component(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p98" org.eventb.core.predicate="new_ports∈ports(Mdl) ∖ dom(inst_ports) ↣ Port ∖ union(ran(ports))"/> |
|
|
<org.eventb.core.prPred name="p113" org.eventb.core.predicate="pat2inst_p(p)∈1 ‥ c_multiplicity(Pat)(p_component(Pat)(p)) ⇸ (1 ‥ p_multiplicity(Pat)(p) ↣ ports(Mdl)∪ran(new_ports))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p74" org.eventb.core.predicate="Port=IPort∪OPort"/> |
|
|
<org.eventb.core.prPred name="p75" org.eventb.core.predicate="IPort∩OPort=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p32" org.eventb.core.predicate="Mdl∈Model ∖ Pattern"/> |
|
|
<org.eventb.core.prPred name="p33" org.eventb.core.predicate="∀m⦂Model·container(m)∩(id ⦂ ℙ(Component×Component))=(∅ ⦂ ℙ(Component×Component))"/> |
|
|
<org.eventb.core.prPred name="p34" org.eventb.core.predicate="inst_components∈components(Inst) ⤔ components(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p37" org.eventb.core.predicate="c_index∈dom(to_clone_c) ⇸ ℕ"/> |
|
|
<org.eventb.core.prPred name="p40" org.eventb.core.predicate="Mdl∈dom(p_component)"/> |
|
|
<org.eventb.core.prPred name="p105" org.eventb.core.predicate="¬⊤"/> |
|
|
<org.eventb.core.prPred name="p41" org.eventb.core.predicate="Mdl∈dom(ports)"/> |
|
|
<org.eventb.core.prPred name="p42" org.eventb.core.predicate="inst_ports∈ports(Inst) ⤔ ports(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p43" org.eventb.core.predicate="∀m⦂Model·p_component(m)∈ports(m) → components(m)"/> |
|
|
<org.eventb.core.prPred name="p44" org.eventb.core.predicate="components∈Model → ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p46" org.eventb.core.predicate="new_ports[IPort]⊆IPort"/> |
|
|
<org.eventb.core.prPred name="p48" org.eventb.core.predicate="to_unfold_c∩dom(container(Pat))=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p80" org.eventb.core.predicate="p∈(ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(Pat)⇒pat2inst_p(p)∈1 ‥ c_multiplicity(Pat)((p_component{Mdl ↦ p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))})(Pat)(p)) ⇸ (1 ‥ p_multiplicity(Pat)(p) ↣ (ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(Inst))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p86" org.eventb.core.predicate="pat2inst_p(p)∈1 ‥ c_multiplicity(Pat)((p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components)))(p)) ⇸ (1 ‥ p_multiplicity(Pat)(p) ↣ ports(Mdl)∪ran(new_ports))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p49" org.eventb.core.predicate="Inst∈dom(components)"/> |
|
|
<org.eventb.core.prPred name="p51" org.eventb.core.predicate="∀m⦂Model·finite(ports(m))"/> |
|
|
<org.eventb.core.prPred name="p52" org.eventb.core.predicate="components∈Model ⇸ ℙ(Component)"/> |
|
|
<org.eventb.core.prPred name="p53" org.eventb.core.predicate="Inst∈dom(container)"/> |
|
|
<org.eventb.core.prPred name="p100" org.eventb.core.predicate="(p_multiplicity(Mdl))[ports(Mdl)]⊆{1}"/> |
|
|
<org.eventb.core.prPred name="p55" org.eventb.core.predicate="dom(to_unfold_c_in)⊆dom(container(Pat))"/> |
|
|
<org.eventb.core.prPred name="p0" org.eventb.core.predicate="∀p⦂Port·p∈(ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(Pat)⇒pat2inst_p(p)∈1 ‥ c_multiplicity(Pat)((p_component{Mdl ↦ p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))})(Pat)(p)) ⇸ (1 ‥ p_multiplicity(Pat)(p) ↣ (ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(Inst))"/> |
|
|
<org.eventb.core.prPred name="p56" org.eventb.core.predicate="ran(to_clone_c)⊆dom(pat2inst_c)"/> |
|
|
<org.eventb.core.prPred name="p76" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·¬m1=m2⇒components(m1)∩components(m2)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p59" org.eventb.core.predicate="p_component∈Model ⇸ ℙ(Port × Component)"/> |
|
|
<org.eventb.core.prPred name="p106" org.eventb.core.predicate="⊥"/> |
|
|
<org.eventb.core.prPred name="p85" org.eventb.core.predicate="Inst=Mdl"/> |
|
|
<org.eventb.core.prPred name="p61" org.eventb.core.predicate="partition(Port,IPort,OPort)"/> |
|
|
<org.eventb.core.prPred name="p62" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒c_multiplicity(m)∈components(m) → ℕ"/> |
|
|
<org.eventb.core.prPred name="p64" org.eventb.core.predicate="∀m1⦂Model,m2⦂Model·m1≠m2⇒ports(m1)∩ports(m2)=(∅ ⦂ ℙ(Port))"/> |
|
|
<org.eventb.core.prPred name="p102" org.eventb.core.predicate="¬Pat=Mdl"/> |
|
|
<org.eventb.core.prPred name="p65" org.eventb.core.predicate="container∈Model → (Component ⇸ Component)"/> |
|
|
<org.eventb.core.prPred name="p66" org.eventb.core.predicate="Inst∈dom(p_multiplicity)"/> |
|
|
<org.eventb.core.prPred name="p67" org.eventb.core.predicate="∀c⦂Component·c∈dom(pat2inst_c)⇒pat2inst_c(c)∈1 ‥ c_multiplicity(Pat)(c) → components(Inst)"/> |
|
|
<org.eventb.core.prPred name="p99" org.eventb.core.predicate="∀p⦂Port·p∈ports(Mdl)⇒pat2inst_p(p)∈1 ‥ c_multiplicity(Mdl)(p_component(Mdl)(p)) ⇸ (1 ‥ p_multiplicity(Mdl)(p) ↣ ports(Mdl))"/> |
|
|
<org.eventb.core.prPred name="p71" org.eventb.core.predicate="Pat∈dom(components)"/> |
|
|
<org.eventb.core.prPred name="p73" org.eventb.core.predicate="Pat∈dom(container)"/> |
|
|
<org.eventb.core.prPred name="p115" org.eventb.core.predicate="(p_multiplicity(Mdl))[ports(Pat)]⊆{1}"/> |
|
|
<org.eventb.core.prPred name="p89" org.eventb.core.predicate="(p_multiplicity(Inst))[ports(Mdl)]⊆{1}"/> |
|
|
<org.eventb.core.prPred name="p110" org.eventb.core.predicate="pat2inst_p(p)∈1 ‥ c_multiplicity(Mdl)((p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components)))(p)) ⇸ (1 ‥ p_multiplicity(Mdl)(p) ↣ ports(Inst))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p1" org.eventb.core.predicate="to_unfold_c∩dom(to_unfold_c_in)=(∅ ⦂ ℙ(Component))"/> |
|
|
<org.eventb.core.prPred name="p78" org.eventb.core.predicate="Pattern⊆Model"/> |
|
|
<org.eventb.core.prPred name="p81" org.eventb.core.predicate="p∈(ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(Pat)"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p91" org.eventb.core.predicate="inst_components∈components(Mdl) ⤔ components(Mdl)"/> |
|
|
<org.eventb.core.prPred name="p96" org.eventb.core.predicate="dom(inst_ports)⊆dom(p_component(Mdl) ▷ dom(inst_components))"/> |
|
|
<org.eventb.core.prPred name="p82" org.eventb.core.predicate="pat2inst_p(p)∈1 ‥ c_multiplicity(Pat)((p_component{Mdl ↦ p_component(Mdl)∪((inst_ports∪new_ports)∼;p_component(Inst);(inst_components∪new_components))})(Pat)(p)) ⇸ (1 ‥ p_multiplicity(Pat)(p) ↣ (ports{Mdl ↦ ports(Mdl)∪ran(new_ports)})(Inst))"> |
|
|
<org.eventb.core.prIdent name="p" org.eventb.core.type="Port"/> |
|
|
</org.eventb.core.prPred> |
|
|
<org.eventb.core.prPred name="p7" org.eventb.core.predicate="∀m⦂Model·m∈Pattern⇒p_multiplicity(m)∈ports(m) → ℕ"/> |
|