From: <fra...@us...> - 2009-08-24 23:13:05
|
Revision: 1853 http://javapathfinder.svn.sourceforge.net/javapathfinder/?rev=1853&view=rev Author: frankrimlinger Date: 2009-08-24 21:38:27 +0000 (Mon, 24 Aug 2009) Log Message: ----------- Auto-generation of stable rules, composition rules, and template-rulekey bindings in progress. The corresponding static rules have been removed from the rulebase, and all requisite implications for dynamic instantiation been introduced into the type system. It remains to create the new RuleManager classes and implement dynamic rule instantiation. The design is as follows. The StableRuleManager will generate the rules required for stability. 1. Each rulekey that wants to participate will imply the <stableExp> type. 2. When a rule is initialized, if the lead rulekey has the <stableExp> type, then the rulekey together with the number of arguments n is passed to the StableRuleManager. 3. If necessary, the stable rule manager instantiates a stable rule: Name "<rulekey>_stableExp<n>" Pattern: (rulekey x1 ... x_n) Action: Substitution Requirement: x1 Stable ... x_n Stable Substitution: (rulekey x1 ... x_n) The ComposeRuleManager will generate the rules required for composition. 1. Each rulekey that wants to participate will imply the <composeExp> type. 2. When a rule is initialized, if the lead rulekey has the <stableExp> type, then the rulekey together with the number of arguments is n passed to the ComposeRuleManager. 3. If necessary, the stable rule manager instantiates a compose rule: Name: "<rulekey>_composeExp<n>" Pattern: (o (rulekey x1 ...x_n) state) Action: Substitution Requirement: x1 Stable ... x_n Stable state Stable Substitution: (rulekey (o x1 state) ... (o x_n state)) The TemplateRuleKeyBindingManager will generate the rules requirement for template-rulekey binding 1. For each family of template rule-key binding actions Template.XXXn, introduce the formal type <Template.XXX>. Each such type implies the formal type <templateRuleKeyBinding>. Each rulekey that wants a Template.XXX binding will imply the <Template.XXX> type. 2. When a rule is initialized, if the lead rulekey has the <templateRuleKeyBinding> type, then the rulekey together with the number of arguments is n passed to the TemplateRuleKeyBindingManager. 3. If necessary, for each detected type <Template.XXX> of the rulekey, the TemplateRuleKeyBindingManager will generate the following rule: Name: "<rulekey>_Template.XXX<n>" Pattern: (rulekey 'Template) Action: Template.XXX<n> Modified Paths: -------------- branches/mango/Mango/Mango/src/mango/core/CoreRule.java branches/mango/Mango/Mango/src/mango/core/util/CoreUtilities.java branches/mango/Mango/Mango/src/mango/worker/engine/hash/symbolHash/SymbolHashMangoModel.java branches/mango/Mango/Mango/src/mango/worker/engine/hash/symbolHash/SymbolHashRecent.java branches/mango/Mango/Mango/src/mango/worker/engine/hash/symbolHash/SymbolHashTyping.java branches/mango/Mango/javapathfinder-mango-bridge/mango/FormalTypes.java branches/mango/Mango/mangoUserHome/frank/rules/rulebase.zip branches/mango/Mango/mangoUserHome/frank/sessions/baseline/itsAWrap/<init>()V/case.zip branches/mango/Mango/mangoUserHome/frank/sessions/baseline/itsAWrap/clear([I)V/Array length of x is greater than or equal to 10.zip branches/mango/Mango/mangoUserHome/frank/sessions/baseline/itsAWrap/clear([I)V/loops/-baseline.itsAWrap.clear([I)V#8- dload_i_Code_01/op0 is less than 10.zip branches/mango/Mango/mangoUserHome/frank/sessions/baseline/itsAWrap/main([I)Z/x[5] equals x[6].zip Added Paths: ----------- branches/mango/Mango/Mango/src/mango/worker/engine/hash/symbolHash/SymbolHashStable.java branches/mango/Mango/javapathfinder-mango-bridge/mango/CompositionImplication.java branches/mango/Mango/javapathfinder-mango-bridge/mango/StableImplication.java branches/mango/Mango/javapathfinder-mango-bridge/mango/TemplateImplication.java Removed Paths: ------------- branches/mango/Mango/Mango/src/mango/ruleAction/conditionalTechniques/conditional/GetFreeVariableName.java This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |