|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 16384 (0x4000) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body F_General_Bundle, package body Make_Sub_Goals_Rule, package body Resolve_Sub_Goals_Rule, package body Stop_Condition_Rule, seg_03b8f3
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦this⟧
with Alias; with F_Frames; with Output_Stream; with Slot; use Slot; package body F_General_Bundle is use Alias; use F_Frames; use F_Kbs.Kbs.Predicate; use F_Kbs.Kbs.Predicate.System_Defined_Predicate; use F_Kbs.Kbs.Expression.System_Defined_Expression; use F_Kbs.Kbs.Expression; use F_Kbs.Kbs; type Rule_Names is (Stop_Condition, Resolve_Sub_Goals, Make_Sub_Goals, No_More); --------------------------------------------------------------------------- package Stop_Condition_Rule is function Premiss return F_Kbs.Kbs.Fact_Queries; procedure Action (Objects : F_Kbs.Kbs.Fact_Collection); end Stop_Condition_Rule; package body Stop_Condition_Rule is function Premiss return F_Kbs.Kbs.Fact_Queries is begin return (1 => (Factorials.Exist ((Number => Is_Equal (1), Value => Is_Undefined, Message => Is_Any)))); end Premiss; procedure Action (Objects : F_Kbs.Kbs.Fact_Collection) is The_Fact : F_Kbs.Kbs.Fact_Name renames Objects (1); use Output_Stream; begin New_Line (Standard_Output); Put_Line ("---- Stop condition rule -----", Standard_Output); --New_Line (Standard_Output); --Put ("Modifying : ", Standard_Output); --Put (The_Fact, Standard_Output); Factorials.Change (The_Fact, Value, Slot.Value (1)); Factorials.Change (The_Fact, Message, Slot.Value ("Hello world")); New_Line (Standard_Output); --Put ("Becomes : ", Standard_Output); --F_Frames.Put (The_Fact, Standard_Output); --New_Line (Standard_Output); --New_Line (Standard_Output); end Action; end Stop_Condition_Rule; --------------------------------------------------------------------------- package Resolve_Sub_Goals_Rule is function Premiss return F_Kbs.Kbs.Fact_Queries; procedure Action (Objects : F_Kbs.Kbs.Fact_Collection); end Resolve_Sub_Goals_Rule; package body Resolve_Sub_Goals_Rule is function Premiss return F_Kbs.Kbs.Fact_Queries is begin return (Factorials.Exist ((Number => Define_As (N), Value => Is_Defined, Message => Is_Equal (Value ("Hello ") & Value ("world")))), Factorials.Exist ((Number => Is_Equal (Value (N) + Value (1)), Value => Is_Undefined, Message => Is_Any)), Factorials.Not_Any ((Number => Is_Less (N), Value => Is_Undefined, Message => Is_Any))); end Premiss; procedure Action (Objects : F_Kbs.Kbs.Fact_Collection) is The_Known_Fact : F_Kbs.Kbs.Fact_Name renames Objects (1); The_Unknown_Fact : F_Kbs.Kbs.Fact_Name renames Objects (2); The_Number : Slot.Object := F_Frames.Factorials.Get (The_Unknown_Fact, F_Frames.Number); The_Value : Slot.Object := F_Frames.Factorials.Get (The_Known_Fact, F_Frames.Value); use Output_Stream; use Slot.Operators; begin New_Line (Standard_Output); Put_Line ("---- Resolve sub-goals rule -----", Standard_Output); New_Line (Standard_Output); --Put ("Modifying : ", Standard_Output); --Put (The_Unknown_Fact, Standard_Output); Factorials.Change (The_Unknown_Fact, Value, The_Number * The_Value); Factorials.Change (The_Unknown_Fact, Message, Value ("Hello world")); New_Line (Standard_Output); --Put ("Becomes : ", Standard_Output); --F_Frames.Put (The_Unknown_Fact, Standard_Output); New_Line (Standard_Output); --Put ("Deleting: ", Standard_Output); --F_Frames.Put (The_Known_Fact, Standard_Output); --F_Frames.Factorials.Delete (The_Known_Fact); end Action; end Resolve_Sub_Goals_Rule; --------------------------------------------------------------------------- package Make_Sub_Goals_Rule is function Premiss return F_Kbs.Kbs.Fact_Queries; procedure Action (Objects : F_Kbs.Kbs.Fact_Collection); end Make_Sub_Goals_Rule; package body Make_Sub_Goals_Rule is function Premiss return F_Kbs.Kbs.Fact_Queries is begin return (Factorials.Exist ((Number => Define_As (N), Value => Is_Undefined, Message => Is_Any)), Factorials.Not_Any ((Number => Is_Equal ((Value (N) - Value (1))), Value => Is_Any, Message => Is_Any))); end Premiss; procedure Action (Objects : F_Kbs.Kbs.Fact_Collection) is use Output_Stream; The_Fact : F_Kbs.Kbs.Fact_Name renames Objects (1); The_Number : Integer := F_Frames.Factorials.Get (The_Fact, F_Frames.Number); begin New_Line (Standard_Output); Put_Line ("---- Make sub-goals rule -----", Standard_Output); New_Line (Standard_Output); --Put ("Creating : ", Standard_Output); The_Number := The_Number - 1; Factorials.Add ((Value (The_Number), Undefined_Value, Value (" "))); --New_Line (Standard_Output); end Action; end Make_Sub_Goals_Rule; --------------------------------------------------------------------------- package Rule_Bundle is new F_Kbs.Kbs.Rule_Base.Generic_Rule_Bundle (The_Bundle => F_Kbs.F_Bundle, Rule_Names => Rule_Names, Nothing => Rule_Names'Last, Rule_1 => Stop_Condition, Premiss_1 => Stop_Condition_Rule.Premiss, Action_1 => Stop_Condition_Rule.Action, Rule_2 => Resolve_Sub_Goals, Premiss_2 => Resolve_Sub_Goals_Rule.Premiss, Action_2 => Resolve_Sub_Goals_Rule.Action, Rule_3 => Make_Sub_Goals, Premiss_3 => Make_Sub_Goals_Rule.Premiss, Action_3 => Make_Sub_Goals_Rule.Action); procedure Do_Action (For_Rule : F_Kbs.Kbs.Rule_Id; On_Facts : F_Kbs.Kbs.Fact_Collection) is begin Rule_Bundle.Do_Action (For_Rule, On_Facts); end Do_Action; end F_General_Bundle;
nblk1=f nid=9 hdr6=12 [0x00] rec0=20 rec1=00 rec2=01 rec3=088 [0x01] rec0=01 rec1=00 rec2=02 rec3=022 [0x02] rec0=1a rec1=00 rec2=0b rec3=03c [0x03] rec0=15 rec1=00 rec2=05 rec3=030 [0x04] rec0=12 rec1=00 rec2=0a rec3=038 [0x05] rec0=19 rec1=00 rec2=04 rec3=006 [0x06] rec0=16 rec1=00 rec2=07 rec3=03c [0x07] rec0=14 rec1=00 rec2=0e rec3=084 [0x08] rec0=0d rec1=00 rec2=0d rec3=000 [0x09] rec0=0a rec1=00 rec2=0d rec3=000 [0x0a] rec0=10 rec1=00 rec2=04 rec3=000 [0x0b] rec0=0e rec1=00 rec2=02 rec3=000 [0x0c] rec0=0e rec1=00 rec2=02 rec3=000 [0x0d] rec0=07 rec1=00 rec2=06 rec3=000 [0x0e] rec0=00 rec1=00 rec2=00 rec3=019 tail 0x21737f046850940e428d4 0x42a00088462063c03 Free Block Chain: 0x9: 0000 00 0c 03 fc 80 4a 20 20 20 20 20 20 20 20 46 61 ┆ J Fa┆ 0xc: 0000 00 0f 00 04 80 01 20 01 02 03 04 05 06 07 08 09 ┆ ┆ 0xf: 0000 00 03 01 63 80 14 6f 6c 76 65 5f 53 75 62 5f 47 ┆ c olve_Sub_G┆ 0x3: 0000 00 06 00 05 80 02 61 74 02 03 74 05 06 74 08 09 ┆ at t t ┆ 0x6: 0000 00 08 00 ef 00 36 20 20 20 20 70 72 6f 63 65 64 ┆ 6 proced┆ 0x8: 0000 00 00 00 f0 80 1c 65 20 28 31 29 2c 20 41 6c 69 ┆ e (1), Ali┆