-- Programmed by Jedidiah Barber -- Licensed under the Sunset License v1.0 -- See license.txt for further details with Ada.Strings.Unbounded, Ada.Text_IO, Kompsos.Pretty_Print; procedure Membero is package SU renames Ada.Strings.Unbounded; package TIO renames Ada.Text_IO; function "+" (Item : in String) return SU.Unbounded_String renames SU.To_Unbounded_String; package SKomp is new Kompsos (SU.Unbounded_String); use SKomp; package Printer is new SKomp.Pretty_Print (SU.To_String); Verse : World := Empty_World; Test_Item : constant Term := T (T (+"one") & T (+"two") & T (+"three") & T (+"four")); begin TIO.Put_Line ("Test program to check if membero, and hence recursion, is working."); TIO.Put_Line ("Not currently designed to check for infinite recursion."); TIO.New_Line; TIO.Put_Line ("Should find all possible members of (one two three four)"); TIO.New_Line; Verse.Member (Verse.Fresh ("result") & Test_Item); TIO.Put_Line ("Raw results:"); TIO.Put_Line (Printer.Image (Verse)); TIO.New_Line; TIO.Put_Line ("Reified results:"); for Subst of Verse.Take_All loop TIO.Put_Line (Printer.Image (Resolve_First (Subst, "result"))); end loop; end Membero;