Difference between pages "Main Page" and "Maplet Overriding in Goal"

From Event-B
(Difference between pages)
Jump to navigationJump to search
imported>Richardcook
 
imported>Billaude
(New page: This page describes the design of a tactic requested here : [https://sourceforge.net/tracker/index.php?func=detail&aid=3306228&group_id=108850&atid=651672 Feature Request #3306228] = Obje...)
 
Line 1: Line 1:
__NOTOC__
+
This page describes the design of a tactic requested here : [https://sourceforge.net/tracker/index.php?func=detail&aid=3306228&group_id=108850&atid=651672 Feature Request #3306228]
<div id="accueil_title">{{Main Page/title}}</div>
 
<div align="right" class="main_page_frame_link">[[Template:Main Page/title|Edit]]</div>
 
<!-- ===================================================== -->
 
{|width="100%" cellspacing="0" cellpadding="0" style="margin-top:0.6em"
 
<!--
 
|-
 
|width="50%" valign="middle" style="border:1px solid #CCF7CC;background:#EEFFEE;padding:7px"|
 
{{Encyclopédie recherche}}
 
|style="padding:4px;font-size:1px"|&nbsp;
 
|width="50%" valign="middle" style="border:1px solid #DDDDF7;background:#F7F7FF;padding:7px"|
 
{{Encyclopédie participation}}
 
-->
 
|-
 
|style="font-size:0.6em;line-height:0.6em"|&nbsp;
 
|-
 
| valign="top"|
 
  
<!-- ============================================= -->
+
= Objective =
{{Main Page/Frame
 
|title = User Documentation
 
|content = Main Page/User Documentation
 
|link = [[Template:Main Page/User Documentation|Edit]]
 
}}
 
<!-- ============================================= -->
 
{{Main Page/Frame
 
|title = [[Developer Documentation]]
 
|content = Main Page/Developer Documentation
 
|link = [[Template:Main Page/Developer Documentation|Edit]]
 
}}
 
<!-- ============================================= -->
 
{{Main Page/Frame
 
|title = Rodin News
 
|content = Dev_News
 
|link = {{nobr|[[Template:Dev_News/Archives|Archives]] ·}} [[Template:Dev_News|Edit]]
 
}}
 
<!-- ============================================= -->
 
|style="padding:4px;font-size:1px"|&nbsp;
 
|width="50%" valign="top"|
 
<!-- ============================================= -->
 
{{Main Page/Frame
 
|title = Community
 
|content = Main Page/Community
 
|link = [[Template:Main Page/Community|Edit]]
 
}}
 
<!-- ============================================= -->
 
{{Main Page/Frame
 
|title = General News
 
|content = News
 
|link = {{nobr|[[Template:News/Archives|Archives]] ·}} [[Template:News|Edit]]
 
}}
 
  
<!-- ============================================= -->
+
Split every goal in the form : <math> f \ovl{\left\{x \mapsto y\right\}} \in A \to B </math> into three sub-goals :
|}
+
:*<math>{x} \domsub f \in A \smallsetminus \left\{x\right\} \to B</math>
 +
:*<math>x \in A</math>
 +
:*<math>y \in B</math>
 +
 
 +
= Design Decision =
 +
 
 +
Instead of proofing the first sub-goal, it may be more easy to proof <math>f\in A\to B</math> which is a sufficient condition : <math>(f\in A\to B)\limp ({x} \domsub f \in A \smallsetminus \left\{x\right\} \to B)</math>.
 +
 
 +
= Implementation =
 +
 
 +
First, the goal is checked. Its tree structure must match the following one :
 +
<math>\in</math>
 +
├── <math>\ovl</math>
 +
│   ├── f
 +
│   └── {}
 +
│       └──  <math>\mapsto</math>
 +
│            ├── x
 +
│            └── y
 +
└── <math>\to</math>
 +
    ├── A
 +
    └── B
 +
Then, if the hypothesis <math>f\in A\to B</math> is contained in the hypothesis the goal is splitted as follows :
 +
:*<math>f\in A\to B</math>
 +
:*<math>x \in A</math>
 +
:*<math>y \in B</math>
 +
Else, it is splitted as follows :
 +
:*<math>{x} \domsub f \in A \smallsetminus \left\{x\right\} \to B</math>
 +
:*<math>x \in A</math>
 +
:*<math>y \in B</math>
 +
 
 +
[[Category:Design proposal]]

Revision as of 09:44, 26 May 2011

This page describes the design of a tactic requested here : Feature Request #3306228

Objective

Split every goal in the form :  f \ovl{\left\{x \mapsto y\right\}} \in A \to B into three sub-goals :

  • {x} \domsub f \in A \smallsetminus \left\{x\right\} \to B
  • x \in A
  • y \in B

Design Decision

Instead of proofing the first sub-goal, it may be more easy to proof f\in A\to B which is a sufficient condition : (f\in A\to B)\limp ({x} \domsub f \in A \smallsetminus \left\{x\right\} \to B).

Implementation

First, the goal is checked. Its tree structure must match the following one :

\in
├── \ovl
│   ├── f
│   └── {}
│       └──  \mapsto
│            ├── x
│            └── y
└── \to
    ├── A
    └── B

Then, if the hypothesis f\in A\to B is contained in the hypothesis the goal is splitted as follows :

  • f\in A\to B
  • x \in A
  • y \in B

Else, it is splitted as follows :

  • {x} \domsub f \in A \smallsetminus \left\{x\right\} \to B
  • x \in A
  • y \in B