============================================================================
        ˰¸ݲѤˡŪ䥷ƥ : NEWGDA

                         桼ޥ˥奢

  Copyright (C) 1996  Tokuyasu Kakuta, Makoto Haraguchi, Yoshiaki Okubo

                         ǽ 1996.7.5
============================================================================

1. ƥγ

  ܥƥϡ֥˰¸ݲ(GDA)ѤˡŪפԤ
  ǤꡢϡˡŪˤԤΤǤ롣
  ܤϡJIPDECʿ8ǯ3٤IFS񤢤뤤ϡźդ
  Υ쥸(doc/newgda.txt)򻲾ȤΤȡ
  ˡŪˡΧ롼(ʸ)ŬѤȤ賵ǰؾ塢ŬѤǤʤ
  ǰ򤽤Υ롼ŬѤݡΰۤʤ복ǰ֤򡢤Ŭ
  ξ¸褦˷׻롣η̡ñݤΥå
  ΤߤǤʤƱδ顢¾γǰܤФ

  ꡼СǤ׻ʬΤߤΥ⥸塼ˤʤ뤿
  ᡢˡŪľܱѤ뤿ˤϡѼԤˡŪԤ碌Ƥ
  󥸥ѤơŬѺξܥƥϤ
  Фʤʤ

  ʤܥ⥸塼׻ΤߤΤȤʤäƤ뤿ᡢˡΧʳο
  Ƥ⡢¤¸׻ѲǽǤ롣κݡ
  䤳ǽ˴ŤϤȤʤȤ߹礻ǽǤ롣

2. Ķ

  ܥƥưĶϡKLIC 2.0ʾưĶǡKLIC󥹥ȡ
  Ƥ뤳ȡ
  ʤܥƥñȤǿ󥸥ʤᡢѼԤϥ
  ˴ŤϤѰդɬפ롣

3. ץ๽

  ܥƥΥץϰʲ̤Ǥ롣

   main.kl1 ... ñΤѤ main ⥸塼Τߤޤࡣ
   newgda.kl1 ... ܥƥ󶡤 main ʳ⥸塼ޤࡣ

  newgda.kl1 ˴ޤޤ⥸塼빽ʲ˼

    GDA׻⥸塼뷲

      gda ........ [GDAᥤ]
      init ....... [ѡƥ]
      lpg ........ [ѡƥ]
      abs ........ [Ŭݲ]

    桼ƥƥ⥸塼뷲

      termop ..... []
      coder ...... [ɴ]
      clause ..... []
      pool ....... [ס]
      io ......... []

4. makeˡ

  makeɬפʥեϰʲ̤Ǥ롣

    main.kl1
    newgda.kl1

  ե¸ߤǥ쥯ȥˤơKLICΥѥ̤äƤ
  ֤ǡޥɥ饤󤫤顢ʲ¹ԤǤ롣

    klic -o gda newgda.kl1 main.kl1

  ơgda Ȥ¹ԷΥե뤬롣

5. ϥե

  GDAԤܥƥबɬפȤϥեˤĤƵҤ롣
  ϥեϡʲΤ褦ʣĤʬ鹽롣

  (1)  (̾:proof)

      Фκݤ¸˻Ѥ줿򤹤٤ƵҤ롣

  (2) ȳ (̾:sort)

      ȳؤݴطˤȾΣФɬʬҤ롣

  (3) ԵߺѾ (̾:sg)
      ˡΧΥ롼(ʸ)ŬѤ褦ȤȤѿܤơ
      ȡ˥ե󤬼ԤƤޤ硢ѿФ
      դƤ륽ȤȤ򵭽Ҥ롣СϰĤѿˤΤ
      Ƥ롣(äơ <SGꥹ> ϰȤΤߤҤǤ
      ʤ)
      ޤԤθȤʤäƤ륽ȤΤ롼˸줿ΤΥꥹȤ
      롼볰桼Ϳ˸륽ȤΥꥹȤʬƵҤ
      롣

  (4) ݲΤõ (̾:abs)
      ԤäϤǤGDAɬפƤβȤƵҤ롣
      GDAݲɬפʲȤϡ˸줿٤ƤΥȵ
      (ȥåץȤ֤Τ)ǡ򿿤Ȥ
      β(Υդѿ)ȤƤϤ᤿ǵҤ롣

  ϥեϤ򤹤٤ƴޤޤʤФʤʤ
  嵭γˤϡȳΥǡҤ롣
  ϡ

    :- <̾> .

  ȵҤ뤤ϥե륨ɤޤǡǡ򣱤İʾ嵭Ҥ롣
  ǡϥ󥿥åϰʲ̤Ǥ롣

    <ڥǡ> ::= <> .
    <ȳإǡ> ::= <> =< <> .
    <ԵߺѾǡ> ::= sg( [ <SGꥹ> ] ) .
    <ABSõǡ> ::= <> .
    <SGꥹ> ::= ( <롼⼺ԥꥹ> , <롼볰ԥꥹ> ) | 
              ( <롼⼺ԥꥹ> , <롼볰ԥꥹ> ) , <SGꥹ>
    <롼⼺ԥꥹ> ::= [ <ȥꥹ> ]
    <롼볰ԥꥹ> ::= [ <ȥꥹ> ]
    <ȥꥹ> ::= <> | <> , <ȥꥹ>

  ǡ<> ȤϥȵǤꡢProlog(KLIC)ΥȥƱͤ
  󥿥åȤ롣ޤ<> ȤϡѿФ

    <ѿ> : <>

  ηǡդԤ줿Ǥ롣ϸСǤϡ
  ΤߤȤ롣ܥƥꤷƤǤϡѿ˥Ȥդϡ
  ɬǤѿκǽνиФơȤդʤФʤʤ
  ޤȥåץȤ * ͽ󤷤Ƥ롣
  ˡ˥åξ硢ܥǥ true 򵭽ҤʤФʤʤ

6. Ϸ

  ܥƥˤäƷ׻줿ȤϡɸϤ

    [ <ȤΥꥹ> , .... ]

  ηǽϤ롣 <ȤΥꥹ> Ȥ륽ȷ
  PrologꥹȤǤ롣

7. ˡ

  7.1 ñ

     ϥե뤬줿塢ܥƥñΤǻѤˤϡmake 
      gda ޥɤ򥷥Υޥɥ饤󤫤Ϥ롣ȡ

       input file ? :

     ȤץץȤɽΤǡȥȤƥե̾Ϥ롣
     ĥդϥ󥰥륯ȤǰϤࡣǸ˥ԥꥪɤǤ
     Ϥ롣ȷ׻ϤޤꡢɸϤ˲֤

     ʲ˻򼨤

       % gda
       input file ? : 'test.in'.
       [[vehicle,tank]]
       [[vehicle,ship]]
       [[vehicle,tank,ship]]

  7.2 ȹ

     ܥƥѼԤKLICץȤ߹ϡnewgda.kl1 Τ
     ѼԤΥƥ˥󥯤롣ΤȤƤӽФҸϰʲ̤
     Ǥ롣

       gda:gda(FileName,Out)

          FileName [ϰ] ե̾Υȥޤϥȥ
          Out      [ϰ] ׻̤Υꥹ

  7.3 оݤȤƤƥ

     ܥƥबоݤȤƤƥϡѤ
     ƥǤꡢʲΤ褦¤롣

     (1) ȴ֤δطݴطΤߤҤǤʤ
         (instance-of طϥݡȤƤʤ)       
     (2) °бƤʤ
     (3) ΤߤбƤ롣
     (4) ȥ˥եϥȤζ綦̲äƤ롣
         (ȳؤɬ«ǤʤƤ褤)

     HELIC-IIH-LIFEΦ׹Ǥ°ΤʤѴ(°򣲹Ҹ
     ֤Ф褤)ȤФѿ꿶ܥƥꤷ
     μɽȤʤꡢνϤȤ߹碌뤳ȤǽǤ롣

8. ȼ¹

  ˤ¹򼨤
  ץȤźդ demo.in ϥեȤ롣

  եƤγפϡ

    :-sort.
    animal=<object.
    arms=<object.
    bag=<object.
    vehicle=<object.
          :
          :
    :-proof.
    rest(_20997:man,_20992:park):-true.
    gather(_21030:man,_21025:place):-rest(_21030,_21025).
    in('$sk1','$sk2'):-true.
    movable(_21088:tank):-true.
    big(_21112:tank):-true.
    danger(_21151:object):-big(_21151),movable(_21151),
         in(_21151,_21136:place),gather(_21141:man,_21136).
    :-abs.
    move(_21227:object,_21242:place,_21259:place):-true.
    move('$sk1','$sk3','$sk2'):-true.
    danger(_21439:object):-big(_20875),movable(_20875),
         in(_20875,_20886),gather(_20888,_20886).
          :
          :
    :-sg.
    sg([vehicle],[object,tank]).

  Τ褦˵ҤƤ롣
  Υե򥷥ƥϤȤ롣
  ñΤǻѤϡ

    % gda

  Ϥơ

    input file ? : 'demo.in'.

  Τ褦ˡץץȤФơ'demo.in'. Ϥ롣
  ȡʲΤ褦ɸϤɽ롣

    [[vehicle,tank]]
    [[vehicle,tank,ship]]
    [[vehicle,tank,elephant]]
    [[vehicle,tank,ship,elephant]]

  ޤץ椫Ѥϡ

    gda:gda('demo.in',Out)

  ȸƤӽФȡ

    Out = [[[vehicle,tank]],
           [[vehicle,tank,ship]],
           [[vehicle,tank,elephant]],
           [[vehicle,tank,ship,elephant]]]

  ֤롣

  ʤѤ줿Υȳءӡὸ
  demo.cl 󶡤Ƥ롣

  demo.cl ܥƥμ¸ѤΥο󥸥ѤμǤ
  ꡢºݤˤϥȳؤὸ¾ˡ롼ŬѤκοΥȤ
  ҸꥹȡطˤҸΥڥҤƤ롣

9. ϥեκˡ

   demo.cl Τ褦μ¸ΥνϤѤܥ
  ƥϤȤʤ demo.in Τ褦ʥե⤹롣

  (1) ŬѤԤ롼(ʸ)μ椫鸫Ĥ롣

  (2) Υ˥եĴ١μԤƤѿˤ
      ȷ򤽤Υ롼ΥȤ¾ѿղä줿Ȥ
      ʬ롣 <롼⼺ԥꥹ>  <롼볰ԥꥹ> Ȥ
      ƵҤ롣
      ѿϵǽʤˤϡ롼ΤѿΥȤȥ
      ץȤˤ粼ΥȤ <롼볰ԥꥹ> Υ
      ȤȤƵҤˡǤ褤

  (3) 롼롼֤롣κݡŬ˥
      롣

  (4) 롼κΥǿ롣

  (5) 򤬵줿顢ξѥ롣
      ˻Ѥ줿Ƥ᤬ڤȤ proof ˵Ҥ롣

  (6) ڤγΥȤȥåץȤ֤Υ
      õ롣Υ뤬Ƥʤˤϡο
      Υܥǥ򥢥Ȥʤإå򥴡Ȥõ
      롣ʤξ硢ȥåץѿ줿Τ
      Ԥ롣
      õβ(ѿФΥȤˤʤäƤ)ˤ
      бѿ˥ȤȤղäΤ abs γ
      ȤƵҤ롣

============================================================================
                                    (칩)  kaku@int.titech.ac.jp

