File: repall.pro

package info (click to toggle)
spark 2012.0.deb-9
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 29,260 kB
  • ctags: 3,098
  • sloc: ada: 186,243; cpp: 13,497; makefile: 685; yacc: 440; lex: 176; ansic: 119; sh: 16
file content (109 lines) | stat: -rw-r--r-- 4,206 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
% -----------------------------------------------------------------------------
%  (C) Altran Praxis Limited
% -----------------------------------------------------------------------------
% 
%  The SPARK toolset is free software; you can redistribute it and/or modify it
%  under terms of the GNU General Public License as published by the Free
%  Software Foundation; either version 3, or (at your option) any later
%  version. The SPARK toolset is distributed in the hope that it will be
%  useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
%  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
%  Public License for more details. You should have received a copy of the GNU
%  General Public License distributed with the SPARK toolset; see file
%  COPYING3. If not, go to http://www.gnu.org/licenses for a complete copy of
%  the license.
% 
% =============================================================================


/*** do_replace_all(OLD, NEW) -- replace OLD by New in all hyps & concs ***/
do_replace_all(OLD, NEW) :-
        max_hyp_no(MAX),
        replace_all_hyps(OLD, NEW, 1, MAX),
        fail.
do_replace_all(OLD, NEW) :-
        max_conc_no(MAX),
        replace_all_concs(OLD, NEW, 1, MAX),
        fail.
do_replace_all(_, _) :- !.


replace_all_hyps(OLD, NEW, MAX, MAX) :-
        !,
        replace_in_hyp(MAX, OLD, NEW),
        !.
replace_all_hyps(_OLD, _NEW, MIN, MAX) :-
        MIN > MAX,
        !.              /* shouldn't get here... */
replace_all_hyps(OLD, NEW, MIN, MAX) :-
        replace_in_hyp(MIN, OLD, NEW),
        !,
        NEWMIN is MIN + 1,
        replace_all_hyps(OLD, NEW, NEWMIN, MAX),
        !.


replace_in_hyp(HYP, _OLD, _NEW) :-                              /* CFR019 */
        \+ command_arg(expression, all),                        /* CFR019 */
        \+ hyp_to_replace(HYP),                         /* CFR019 */
        !.                                                      /* CFR019 */
replace_in_hyp(HYP, OLD, NEW) :-
        (
           hyp(HYP, OLDEXPR),
           !,
           handle_quantifiers_in(OLDEXPR, OLDTEMPEXPR),         /* CFR027 */
           subst_vbl(OLD, NEW, OLDTEMPEXPR, NEWTEMPEXPR),       /* CFR027 */
           unhandle_quantifiers_in(NEWTEMPEXPR, NEWEXPR),       /* CFR027 */
           !,
           (
              OLDEXPR = NEWEXPR
           ;
              assertz(hyp(HYP, NEWEXPR)),
              assertz(logfact(newhyp, hyp(HYP, NEWEXPR))),
              new_hyp_message(HYP, NEWEXPR),                    /* CFR018 */
              retract(hyp(HYP, OLDEXPR))
           )
        ;
           true         /* for case when no hyp: e.g. simplify cmnd.! */
        ),
        !.


replace_all_concs(OLD, NEW, MAX, MAX) :-
        !,
        replace_in_conc(MAX, OLD, NEW),
        !.
replace_all_concs(_OLD, _NEW, MIN, MAX) :-
        MIN > MAX,
        !.              /* shouldn't get here... */
replace_all_concs(OLD, NEW, MIN, MAX) :-
        replace_in_conc(MIN, OLD, NEW),
        !,
        NEWMIN is MIN + 1,
        replace_all_concs(OLD, NEW, NEWMIN, MAX),
        !.


replace_in_conc(CONC, _OLD, _NEW) :-                            /* CFR019 */
        \+ command_arg(expression, all),                        /* CFR019 */
        \+ conc_to_replace(CONC),                               /* CFR019 */
        !.                                                      /* CFR019 */
replace_in_conc(CONC, OLD, NEW) :-
        conc(CONC, OLDEXPR),
        !,
        handle_quantifiers_in(OLDEXPR, OLDTEMPEXPR),            /* CFR027 */
        subst_vbl(OLD, NEW, OLDTEMPEXPR, NEWTEMPEXPR),          /* CFR027 */
        unhandle_quantifiers_in(NEWTEMPEXPR, NEWEXPR),          /* CFR027 */
        !,
        (
           OLDEXPR = NEWEXPR
        ;
           assertz(conc(CONC, NEWEXPR)),
           assertz(logfact(newconc, conc(CONC, NEWEXPR))),
           new_conc_message(CONC, NEWEXPR),                     /* CFR018 */
           retract(conc(CONC, OLDEXPR))
        ),
        !.
replace_in_conc(_CONC, _OLD, _NEW) :- !.        /* when no conclusion left */
%###############################################################################
%END-OF-FILE