Prologによる社会給付の適格性判定(Prolog-Elegibilidade_Social)

Other

概要

このリポジトリ「Prolog-Elegibilidade_Social」は、大学の「Paradigmas de programação(プログラミング・パラダイム)」の課題として作成された、論理プログラミング(Prolog)を使った社会給付の適格性判定システムです。事実(facts)で利用者属性や給付カテゴリを、ルール(rules)で受給条件を定義し、入力ファイル(entrada.txt)を基にしてどの給付に該当するかを推論します。簡潔な知識ベース(beneficios.pl、categorias.pl)と説明用モジュール(explicacao.pl)を備え、SWI-Prologなどで読み込んでインタラクティブに動作確認が可能です。教育的なサンプルとして、Prologの基本的な書き方と推論過程が学べます。

GitHub

リポジトリの統計情報

  • スター数: 1
  • フォーク数: 0
  • ウォッチャー数: 1
  • コミット数: 2
  • ファイル数: 8
  • メインの言語: Prolog

主な特徴

  • Prologによるルールベースの給付適格性エンジン(教育用途向け)。
  • 給付(benefícios)とカテゴリ(categorias)を分離した知識ベース設計。
  • 入力ファイルからの利用者データ読み取りと説明生成モジュール(explicacao.pl)。
  • SWI-Prolog等でそのまま動かして推論過程を観察できる構成。

技術的なポイント

このプロジェクトは、Prologの典型的な設計パターンを踏襲しており、事実(facts)とルール(rules)による知識表現が核になっています。beneficios.pl には各給付に関する定義と受給条件を表すルールが、categorias.pl には給付の分類やカテゴリ付けを行う事実が記述されている想定です。例えば、収入や年齢、家族構成などの属性を facts として与え、それらに基づく条件式(年齢がX以上、収入が閾値以下など)をルールで組み合わせて「elegivel(Usuario, Beneficio)」のような述語で適格性を導出します。

入力は entrada.txt のようなテキスト形式でサンプルデータを用意し、Prolog 側で読み込んで知識ベースに assert/1 するか、クエリのパラメータとして利用する形が想定されます。explicacao.pl は推論結果に対する説明生成用の補助述語を含み、なぜその給付に該当したのか(どのルールが成立したのか)を人間向けに返すよう設計されている可能性が高いです。これは教育的観点で重要で、Prologのバックトラッキングや証明木(proof tree)を理解する助けになります。

技術的な注目点としては以下が挙げられます:

  • ルールの記述により条件合成(AND/OR)を自然に表現できる点。Prologの論理合成は社会政策の複雑な条件表現に適しています。
  • バックトラッキングを利用した複数給付の列挙や、部分一致による柔軟な検索が可能な点。
  • 説明モジュールにより、単なる yes/no の判定だけでなく、人間が理解しやすい形での理由説明(explainability)を付与している点。
  • 学習用プロジェクトとして、事実の追加・ルールの修正が容易であり、政策変更や閾値調整の影響を即座に確認できる点。

改善余地としては、入力フォーマットをCSVやJSONにして汎用性を高めること、テストスイート(PlUnit等)を追加してルールの正当性を保つこと、そして実際の政策運用向けには説明機構の強化(トレース出力や説明テンプレートの多言語対応)やパフォーマンス面での最適化(索引化やルール分割)を検討すると良いでしょう。SWI-Prologの環境下で consult/1、listing/1、trace/0 を使って動作確認・デバッグすることが推奨されます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • README.md: プロジェクトの概要・目的・簡単な使い方(ファイル)
  • beneficios.pl: 給付(benefícios)に関する事実とルール(ファイル)
  • categorias.pl: 給付のカテゴリ分類や関連事実(ファイル)
  • entrada.txt: サンプル入力データ(ファイル)
  • explicacao.pl: 推論結果を説明するための述語群(ファイル)

…他 3 ファイル(合計8ファイル)。
各ファイルは教育用途を念頭にシンプルに分割されており、beneficios.pl で主要なルールを管理、categorias.pl で分類の定義、explicacao.pl で出力の整形や理由付けを担当するモジュール構成が想定されます。実行は SWI-Prolog を用い、ターミナルで consult(‘beneficios.pl’). 等を実施してクエリを投げる流れが基本です。

まとめ

Prologで社会給付の適格性を学ぶのに適した教育用リポジトリ。ルール設計と説明可能性の学習に有用です。(約50字)

リポジトリ情報:

READMEの抜粋:

Prolog-Elegibilidade_Social

Trabalho desenvolvido para a a matéria de Paradigmas de programação, tendo o paradigma lógico. …