paraconsistent


Nameparaconsistent JSON
Version 0.2.1 PyPI version JSON
download
home_pageNone
SummaryBlocos de lógica paraconsistente com API simples.
upload_time2025-10-28 14:27:45
maintainerNone
docs_urlNone
authorNone
requires_python>=3.9
licenseNone
keywords logic paraconsistent lpa2v reasoning fuzzy
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Paraconsistent Lib

Biblioteca Python para construção de redes de raciocínio baseadas em Lógica Paraconsistente Anotada de dois valores (LPA2v).

## 1. Visão Geral

Paraconsistent Lib implementa a Lógica Paraconsistente Anotada de dois valores (LPA2v), permitindo a modelagem de sistemas de raciocínio que lidam naturalmente com inconsistências e incertezas. A biblioteca oferece uma arquitetura modular baseada em blocos lógicos conectáveis, facilitando a composição de redes de inferência complexas.

### Características Principais

- **Implementação completa da LPA2v** com as 12 regiões de estados lógicos
- **Arquitetura modular** baseada em blocos conectáveis
- **Cálculo automático** de graus de certeza, contradição e evidências
- **Type-safe** com suporte completo a type hints Python
- **Zero dependências externas** (apenas biblioteca padrão Python)
- **Cache inteligente** para otimização de performance

## 2. Instalação

### Requisitos

- Python 3.9 ou superior
- Sem dependências externas

### Instalação via pip

```bash
pip install paraconsistent
```

## 3. Fundamentos Teóricos

### 3.1 Lógica Paraconsistente Anotada (LPA2v)

A LPA2v trabalha com dois graus de evidência:

- **μ (mu)**: Grau de evidência favorável, μ ∈ [0, 1]
- **λ (lambda)**: Grau de evidência desfavorável, λ ∈ [0, 1]

A partir destes valores, são calculados:

- **GC (Grau de Certeza)**: GC = μ - λ, GC ∈ [-1, 1]
- **GCT (Grau de Contradição)**: GCT = μ + λ - 1, GCT ∈ [-1, 1]

### 3.2 Regiões de Estados Lógicos

A LPA2v define 12 regiões no quadrado unitário de anotação (QUPC):

**Estados Extremos:**
- **V (Verdadeiro)**: Alta certeza positiva
- **F (Falso)**: Alta certeza negativa
- **┬ (Inconsistente)**: Alta contradição
- **┴ (Indeterminado)**: Baixa informação

**Estados de Transição:**
- **Q┬→V**: Quase inconsistente tendendo ao verdadeiro
- **Q┬→F**: Quase inconsistente tendendo ao falso
- **QV→┬**: Quase verdadeiro tendendo à inconsistência
- **QF→┬**: Quase falso tendendo à inconsistência
- **QV→┴**: Quase verdadeiro tendendo à indeterminação
- **QF→┴**: Quase falso tendendo à indeterminação
- **Q┴→V**: Quase indeterminado tendendo ao verdadeiro
- **Q┴→F**: Quase indeterminado tendendo ao falso

### 3.3 Métricas Complementares

**Distância Radial:**
- **d**: Distância euclidiana ao vértice mais próximo
- **D**: Distância normalizada (clampada em [0, 1])

**Grau de Certeza Radial:**
- **GCR**: GCR = (1 - D) × sign(GC)

**Evidências Resultantes:**
- **μE**: Evidência baseada em GC, μE = (GC + 1) / 2
- **μECT**: Evidência de contradição, μECT = (GCT + 1) / 2
- **μER**: Evidência real, μER = (GCR + 1) / 2

**Intervalo de Certeza:**
- **φ (phi)**: φ = 1 - |GCT|

## 4. Guia de Uso

### 4.1 Criando um Bloco

```python
from paraconsistent.blocks import ParaconsistentBlock

# Criar bloco com valores padrão
bloco = ParaconsistentBlock()
```

### 4.2 Configurando Parâmetros

```python
from paraconsistent.blocks import ParaconsistentBlock

bloco = ParaconsistentBlock()

# Configurar limite de controle de certeza (FtC)
bloco.config.FtC = 0.70

# Configurar vieses (opcional)
bloco.config.VlV = 0.50  # Viés pró-verdadeiro
bloco.config.VlF = 0.50  # Viés pró-falso
```

### 4.3 Alimentando Entradas

```python
# Definir graus de evidência
bloco.input.mu = 0.80   # Evidência favorável
bloco.input.lam = 0.20  # Evidência desfavorável

# Os cálculos são realizados automaticamente
```

### 4.4 Obtendo Resultados

```python
# Acessar resultados individuais
gc = bloco.complete.gc       # Grau de Certeza
gct = bloco.complete.gct     # Grau de Contradição
muER = bloco.complete.muER   # Evidência Real
label = bloco.complete.label # Região lógica

# Ou imprimir todos os resultados
bloco.print_complete()
```

### 4.5 Conectando Múltiplos Blocos

```python
from paraconsistent.blocks import ParaconsistentBlock

# Criar rede de dois blocos
b1 = ParaconsistentBlock()
b2 = ParaconsistentBlock()

# Configurar bloco 1
b1.config.FtC = 0.70
b1.input.mu = 0.80
b1.input.lam = 0.30

# Usar saída de b1 como entrada de b2
b2.input.mu = b1.complete.muER
b2.input.lam = 1 - b1.complete.phi

# Resultado propagado automaticamente
print(f"Estado final: {b2.complete.label}")
```

## 5. Referência da API

### 5.1 Construtor

```python
ParaconsistentBlock(
    *,
    mu: float | None = None,
    lam: float | None = None,
    **param_overrides
)
```

**Parâmetros:**
- `mu`: Grau de evidência favorável inicial (opcional)
- `lam`: Grau de evidência desfavorável inicial (opcional)
- `**param_overrides`: Parâmetros de configuração (FtC, VlV, VlF, L)

### 5.2 Configuração (config)

| Parâmetro | Tipo | Faixa | Padrão | Descrição |
|-----------|------|-------|--------|-----------|
| FtC | float | [0, 1] | 0.50 | Fator de Tolerância à Certeza (Certainty Control Limit) |
| VlV | float | [0, 1] | 0.50 | Viés pró-verdadeiro |
| VlF | float | [0, 1] | 0.50 | Viés pró-falso |
| L | float | [0, 1] | 0.05 | Limite inferior mínimo (uso futuro) |

**Nota:** Os valores VSSC, VICC, VSSCT e VICCT são calculados automaticamente a partir de FtC:
- VSSC = FtC
- VICC = -FtC
- VSSCT = 1 - FtC
- VICCT = FtC - 1

### 5.3 Entradas (input)

```python
# Forma 1: Atribuição direta
bloco.input.mu = 0.80
bloco.input.lam = 0.20

# Forma 2: Método funcional
bloco.input(mu=0.80, lam=0.20)
```

Valores são automaticamente clampados no intervalo [0, 1].

### 5.4 Saídas (complete)

| Campo | Tipo | Faixa | Descrição |
|-------|------|-------|-----------|
| mu | float | [0, 1] | Grau de evidência favorável |
| lam | float | [0, 1] | Grau de evidência desfavorável |
| gc | float | [-1, 1] | Grau de Certeza: μ - λ |
| gct | float | [-1, 1] | Grau de Contradição: μ + λ - 1 |
| d | float | [0, ∞) | Distância radial bruta |
| D | float | [0, 1] | Distância radial normalizada |
| gcr | float | [-1, 1] | Grau de Certeza Radial: (1 - D) × sign(gc) |
| phi | float | [0, 1] | Intervalo de certeza: 1 - \|gct\| |
| phiE | float | [0, 1] | Intervalo de certeza (alias de phi) |
| muE | float | [0, 1] | Evidência resultante: (gc + 1) / 2 |
| muECT | float | [0, 1] | Evidência de contradição: (gct + 1) / 2 |
| muER | float | [0, 1] | Evidência real: (gcr + 1) / 2 |
| decision_output | float | {0.0, 0.5, 1.0} | Saída de decisão binária |
| label | str | - | Rótulo da região lógica (V, F, ┬, ┴, etc.) |
| Regions | dict | - | Flags booleanas por região |
| FtC, VlV, VlF, L | float | [0, 1] | Echo dos parâmetros usados no cálculo |

**Saída de Decisão (decision_output):**
- 1.0 se μER > FtC (Aceitar como verdadeiro)
- 0.0 se μER < FtC (Rejeitar como falso)
- 0.5 se μER = FtC (Indecisão)

### 5.5 Métodos

```python
# Exportar como dicionário tipado
resultado: Complete = bloco.to_dict()

# Imprimir formatado no console
bloco.print_complete()

# Configurar múltiplos parâmetros
bloco.set_params(FtC=0.7, VlV=0.6, VlF=0.4)
```

## 6. Exemplos Avançados

### 6.1 Sistema de Controle Fuzzy

```python
from paraconsistent.blocks import ParaconsistentBlock

# Criar blocos para temperatura e pressão
temp_block = ParaconsistentBlock()
press_block = ParaconsistentBlock()
decision_block = ParaconsistentBlock()

# Sensor de temperatura (alta = 0.8, baixa = 0.1)
temp_block.input.mu = 0.8
temp_block.input.lam = 0.1

# Sensor de pressão (alta = 0.7, baixa = 0.2)
press_block.input.mu = 0.7
press_block.input.lam = 0.2

# Combinar evidências para decisão
decision_block.input.mu = (temp_block.complete.muER + press_block.complete.muER) / 2
decision_block.input.lam = 1 - decision_block.input.mu

# Avaliar situação
if decision_block.complete.decision_output == 1.0:
    print("Sistema em condição segura")
elif decision_block.complete.decision_output == 0.0:
    print("Alerta: condição crítica detectada")
else:
    print("Situação indefinida - requer análise manual")
```

### 6.2 Análise de Contradições

```python
from paraconsistent.blocks import ParaconsistentBlock

# Cenário: Múltiplas fontes contraditórias
bloco = ParaconsistentBlock()
bloco.config.FtC = 0.6

# Entrada contraditória (alta evidência favorável E desfavorável)
bloco.input.mu = 0.9
bloco.input.lam = 0.8

# Analisar contradição
print(f"Grau de Contradição: {bloco.complete.gct:.2f}")
print(f"Região Lógica: {bloco.complete.label}")

if "┬" in bloco.complete.label:
    print("⚠️ Inconsistência detectada - revisar fontes de informação")
```

## 7. Arquitetura

### 7.1 Estrutura de Módulos

```
paraconsistent/
├── blocks/
│   └── block.py           # Classe ParaconsistentBlock
├── core/
│   ├── config.py          # Configurações e validação
│   ├── engine.py          # Motor de cálculo
│   ├── metrics.py         # Métricas geométricas
│   ├── labels.py          # Classificação de regiões
│   └── types.py           # Type definitions
└── __init__.py
```

### 7.2 Fluxo de Cálculo

1. **Entrada**: Validação e clamping de μ e λ
2. **Graus Principais**: Cálculo de GC e GCT
3. **Geometria**: Cálculo de d, D e GCR
4. **Evidências**: Cálculo de μE, μECT, μER e φ
5. **Decisão**: Comparação de μER com FtC
6. **Classificação**: Identificação da região lógica

### 7.3 Cache e Performance

O sistema implementa cache inteligente que invalida automaticamente ao alterar entradas ou parâmetros, garantindo consistência sem sacrificar performance.

## 8. Validação e Testes

A biblioteca foi validada contra casos de teste padrão da literatura, com taxa de acerto superior a 97% em 37 casos de teste independentes.

## 9. Referências Bibliográficas

- Da Silva Filho, J. I., Lambert-Torres, G., & Abe, J. M. (2010). *Uncertainty Treatment Using Paraconsistent Logic: Introducing Paraconsistent Artificial Neural Networks*. IOS Press.

- Abe, J. M. (1992). *Fundamentos da Lógica Anotada* (Foundations of Annotated Logics). PhD Thesis, University of São Paulo.

- Da Costa, N. C. A., Abe, J. M., & Subrahmanian, V. S. (1991). Remarks on annotated logic. *Zeitschrift für mathematische Logik und Grundlagen der Mathematik*, 37(9‐12), 561-570.

## 10. Licença

MIT License

Copyright (c) 2025

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

## 11. Contribuindo

Contribuições são bem-vindas! Por favor, abra uma issue ou pull request no repositório GitHub.

## 12. Suporte

- **Repositório**: https://github.com/dirgogoo/Paraconsistent-Lib
- **PyPI**: https://pypi.org/project/paraconsistent/
- **Issues**: https://github.com/dirgogoo/Paraconsistent-Lib/issues

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "paraconsistent",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": null,
    "keywords": "logic, paraconsistent, LPA2v, reasoning, fuzzy",
    "author": null,
    "author_email": "Diego <diego263526352635@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/af/35/47ec1594dfdf83a2bf6dcc4b5deca1f71e5a24fe101321d9f987c165c3b0/paraconsistent-0.2.1.tar.gz",
    "platform": null,
    "description": "# Paraconsistent Lib\r\n\r\nBiblioteca Python para constru\u00e7\u00e3o de redes de racioc\u00ednio baseadas em L\u00f3gica Paraconsistente Anotada de dois valores (LPA2v).\r\n\r\n## 1. Vis\u00e3o Geral\r\n\r\nParaconsistent Lib implementa a L\u00f3gica Paraconsistente Anotada de dois valores (LPA2v), permitindo a modelagem de sistemas de racioc\u00ednio que lidam naturalmente com inconsist\u00eancias e incertezas. A biblioteca oferece uma arquitetura modular baseada em blocos l\u00f3gicos conect\u00e1veis, facilitando a composi\u00e7\u00e3o de redes de infer\u00eancia complexas.\r\n\r\n### Caracter\u00edsticas Principais\r\n\r\n- **Implementa\u00e7\u00e3o completa da LPA2v** com as 12 regi\u00f5es de estados l\u00f3gicos\r\n- **Arquitetura modular** baseada em blocos conect\u00e1veis\r\n- **C\u00e1lculo autom\u00e1tico** de graus de certeza, contradi\u00e7\u00e3o e evid\u00eancias\r\n- **Type-safe** com suporte completo a type hints Python\r\n- **Zero depend\u00eancias externas** (apenas biblioteca padr\u00e3o Python)\r\n- **Cache inteligente** para otimiza\u00e7\u00e3o de performance\r\n\r\n## 2. Instala\u00e7\u00e3o\r\n\r\n### Requisitos\r\n\r\n- Python 3.9 ou superior\r\n- Sem depend\u00eancias externas\r\n\r\n### Instala\u00e7\u00e3o via pip\r\n\r\n```bash\r\npip install paraconsistent\r\n```\r\n\r\n## 3. Fundamentos Te\u00f3ricos\r\n\r\n### 3.1 L\u00f3gica Paraconsistente Anotada (LPA2v)\r\n\r\nA LPA2v trabalha com dois graus de evid\u00eancia:\r\n\r\n- **\u03bc (mu)**: Grau de evid\u00eancia favor\u00e1vel, \u03bc \u2208 [0, 1]\r\n- **\u03bb (lambda)**: Grau de evid\u00eancia desfavor\u00e1vel, \u03bb \u2208 [0, 1]\r\n\r\nA partir destes valores, s\u00e3o calculados:\r\n\r\n- **GC (Grau de Certeza)**: GC = \u03bc - \u03bb, GC \u2208 [-1, 1]\r\n- **GCT (Grau de Contradi\u00e7\u00e3o)**: GCT = \u03bc + \u03bb - 1, GCT \u2208 [-1, 1]\r\n\r\n### 3.2 Regi\u00f5es de Estados L\u00f3gicos\r\n\r\nA LPA2v define 12 regi\u00f5es no quadrado unit\u00e1rio de anota\u00e7\u00e3o (QUPC):\r\n\r\n**Estados Extremos:**\r\n- **V (Verdadeiro)**: Alta certeza positiva\r\n- **F (Falso)**: Alta certeza negativa\r\n- **\u252c (Inconsistente)**: Alta contradi\u00e7\u00e3o\r\n- **\u2534 (Indeterminado)**: Baixa informa\u00e7\u00e3o\r\n\r\n**Estados de Transi\u00e7\u00e3o:**\r\n- **Q\u252c\u2192V**: Quase inconsistente tendendo ao verdadeiro\r\n- **Q\u252c\u2192F**: Quase inconsistente tendendo ao falso\r\n- **QV\u2192\u252c**: Quase verdadeiro tendendo \u00e0 inconsist\u00eancia\r\n- **QF\u2192\u252c**: Quase falso tendendo \u00e0 inconsist\u00eancia\r\n- **QV\u2192\u2534**: Quase verdadeiro tendendo \u00e0 indetermina\u00e7\u00e3o\r\n- **QF\u2192\u2534**: Quase falso tendendo \u00e0 indetermina\u00e7\u00e3o\r\n- **Q\u2534\u2192V**: Quase indeterminado tendendo ao verdadeiro\r\n- **Q\u2534\u2192F**: Quase indeterminado tendendo ao falso\r\n\r\n### 3.3 M\u00e9tricas Complementares\r\n\r\n**Dist\u00e2ncia Radial:**\r\n- **d**: Dist\u00e2ncia euclidiana ao v\u00e9rtice mais pr\u00f3ximo\r\n- **D**: Dist\u00e2ncia normalizada (clampada em [0, 1])\r\n\r\n**Grau de Certeza Radial:**\r\n- **GCR**: GCR = (1 - D) \u00d7 sign(GC)\r\n\r\n**Evid\u00eancias Resultantes:**\r\n- **\u03bcE**: Evid\u00eancia baseada em GC, \u03bcE = (GC + 1) / 2\r\n- **\u03bcECT**: Evid\u00eancia de contradi\u00e7\u00e3o, \u03bcECT = (GCT + 1) / 2\r\n- **\u03bcER**: Evid\u00eancia real, \u03bcER = (GCR + 1) / 2\r\n\r\n**Intervalo de Certeza:**\r\n- **\u03c6 (phi)**: \u03c6 = 1 - |GCT|\r\n\r\n## 4. Guia de Uso\r\n\r\n### 4.1 Criando um Bloco\r\n\r\n```python\r\nfrom paraconsistent.blocks import ParaconsistentBlock\r\n\r\n# Criar bloco com valores padr\u00e3o\r\nbloco = ParaconsistentBlock()\r\n```\r\n\r\n### 4.2 Configurando Par\u00e2metros\r\n\r\n```python\r\nfrom paraconsistent.blocks import ParaconsistentBlock\r\n\r\nbloco = ParaconsistentBlock()\r\n\r\n# Configurar limite de controle de certeza (FtC)\r\nbloco.config.FtC = 0.70\r\n\r\n# Configurar vieses (opcional)\r\nbloco.config.VlV = 0.50  # Vi\u00e9s pr\u00f3-verdadeiro\r\nbloco.config.VlF = 0.50  # Vi\u00e9s pr\u00f3-falso\r\n```\r\n\r\n### 4.3 Alimentando Entradas\r\n\r\n```python\r\n# Definir graus de evid\u00eancia\r\nbloco.input.mu = 0.80   # Evid\u00eancia favor\u00e1vel\r\nbloco.input.lam = 0.20  # Evid\u00eancia desfavor\u00e1vel\r\n\r\n# Os c\u00e1lculos s\u00e3o realizados automaticamente\r\n```\r\n\r\n### 4.4 Obtendo Resultados\r\n\r\n```python\r\n# Acessar resultados individuais\r\ngc = bloco.complete.gc       # Grau de Certeza\r\ngct = bloco.complete.gct     # Grau de Contradi\u00e7\u00e3o\r\nmuER = bloco.complete.muER   # Evid\u00eancia Real\r\nlabel = bloco.complete.label # Regi\u00e3o l\u00f3gica\r\n\r\n# Ou imprimir todos os resultados\r\nbloco.print_complete()\r\n```\r\n\r\n### 4.5 Conectando M\u00faltiplos Blocos\r\n\r\n```python\r\nfrom paraconsistent.blocks import ParaconsistentBlock\r\n\r\n# Criar rede de dois blocos\r\nb1 = ParaconsistentBlock()\r\nb2 = ParaconsistentBlock()\r\n\r\n# Configurar bloco 1\r\nb1.config.FtC = 0.70\r\nb1.input.mu = 0.80\r\nb1.input.lam = 0.30\r\n\r\n# Usar sa\u00edda de b1 como entrada de b2\r\nb2.input.mu = b1.complete.muER\r\nb2.input.lam = 1 - b1.complete.phi\r\n\r\n# Resultado propagado automaticamente\r\nprint(f\"Estado final: {b2.complete.label}\")\r\n```\r\n\r\n## 5. Refer\u00eancia da API\r\n\r\n### 5.1 Construtor\r\n\r\n```python\r\nParaconsistentBlock(\r\n    *,\r\n    mu: float | None = None,\r\n    lam: float | None = None,\r\n    **param_overrides\r\n)\r\n```\r\n\r\n**Par\u00e2metros:**\r\n- `mu`: Grau de evid\u00eancia favor\u00e1vel inicial (opcional)\r\n- `lam`: Grau de evid\u00eancia desfavor\u00e1vel inicial (opcional)\r\n- `**param_overrides`: Par\u00e2metros de configura\u00e7\u00e3o (FtC, VlV, VlF, L)\r\n\r\n### 5.2 Configura\u00e7\u00e3o (config)\r\n\r\n| Par\u00e2metro | Tipo | Faixa | Padr\u00e3o | Descri\u00e7\u00e3o |\r\n|-----------|------|-------|--------|-----------|\r\n| FtC | float | [0, 1] | 0.50 | Fator de Toler\u00e2ncia \u00e0 Certeza (Certainty Control Limit) |\r\n| VlV | float | [0, 1] | 0.50 | Vi\u00e9s pr\u00f3-verdadeiro |\r\n| VlF | float | [0, 1] | 0.50 | Vi\u00e9s pr\u00f3-falso |\r\n| L | float | [0, 1] | 0.05 | Limite inferior m\u00ednimo (uso futuro) |\r\n\r\n**Nota:** Os valores VSSC, VICC, VSSCT e VICCT s\u00e3o calculados automaticamente a partir de FtC:\r\n- VSSC = FtC\r\n- VICC = -FtC\r\n- VSSCT = 1 - FtC\r\n- VICCT = FtC - 1\r\n\r\n### 5.3 Entradas (input)\r\n\r\n```python\r\n# Forma 1: Atribui\u00e7\u00e3o direta\r\nbloco.input.mu = 0.80\r\nbloco.input.lam = 0.20\r\n\r\n# Forma 2: M\u00e9todo funcional\r\nbloco.input(mu=0.80, lam=0.20)\r\n```\r\n\r\nValores s\u00e3o automaticamente clampados no intervalo [0, 1].\r\n\r\n### 5.4 Sa\u00eddas (complete)\r\n\r\n| Campo | Tipo | Faixa | Descri\u00e7\u00e3o |\r\n|-------|------|-------|-----------|\r\n| mu | float | [0, 1] | Grau de evid\u00eancia favor\u00e1vel |\r\n| lam | float | [0, 1] | Grau de evid\u00eancia desfavor\u00e1vel |\r\n| gc | float | [-1, 1] | Grau de Certeza: \u03bc - \u03bb |\r\n| gct | float | [-1, 1] | Grau de Contradi\u00e7\u00e3o: \u03bc + \u03bb - 1 |\r\n| d | float | [0, \u221e) | Dist\u00e2ncia radial bruta |\r\n| D | float | [0, 1] | Dist\u00e2ncia radial normalizada |\r\n| gcr | float | [-1, 1] | Grau de Certeza Radial: (1 - D) \u00d7 sign(gc) |\r\n| phi | float | [0, 1] | Intervalo de certeza: 1 - \\|gct\\| |\r\n| phiE | float | [0, 1] | Intervalo de certeza (alias de phi) |\r\n| muE | float | [0, 1] | Evid\u00eancia resultante: (gc + 1) / 2 |\r\n| muECT | float | [0, 1] | Evid\u00eancia de contradi\u00e7\u00e3o: (gct + 1) / 2 |\r\n| muER | float | [0, 1] | Evid\u00eancia real: (gcr + 1) / 2 |\r\n| decision_output | float | {0.0, 0.5, 1.0} | Sa\u00edda de decis\u00e3o bin\u00e1ria |\r\n| label | str | - | R\u00f3tulo da regi\u00e3o l\u00f3gica (V, F, \u252c, \u2534, etc.) |\r\n| Regions | dict | - | Flags booleanas por regi\u00e3o |\r\n| FtC, VlV, VlF, L | float | [0, 1] | Echo dos par\u00e2metros usados no c\u00e1lculo |\r\n\r\n**Sa\u00edda de Decis\u00e3o (decision_output):**\r\n- 1.0 se \u03bcER > FtC (Aceitar como verdadeiro)\r\n- 0.0 se \u03bcER < FtC (Rejeitar como falso)\r\n- 0.5 se \u03bcER = FtC (Indecis\u00e3o)\r\n\r\n### 5.5 M\u00e9todos\r\n\r\n```python\r\n# Exportar como dicion\u00e1rio tipado\r\nresultado: Complete = bloco.to_dict()\r\n\r\n# Imprimir formatado no console\r\nbloco.print_complete()\r\n\r\n# Configurar m\u00faltiplos par\u00e2metros\r\nbloco.set_params(FtC=0.7, VlV=0.6, VlF=0.4)\r\n```\r\n\r\n## 6. Exemplos Avan\u00e7ados\r\n\r\n### 6.1 Sistema de Controle Fuzzy\r\n\r\n```python\r\nfrom paraconsistent.blocks import ParaconsistentBlock\r\n\r\n# Criar blocos para temperatura e press\u00e3o\r\ntemp_block = ParaconsistentBlock()\r\npress_block = ParaconsistentBlock()\r\ndecision_block = ParaconsistentBlock()\r\n\r\n# Sensor de temperatura (alta = 0.8, baixa = 0.1)\r\ntemp_block.input.mu = 0.8\r\ntemp_block.input.lam = 0.1\r\n\r\n# Sensor de press\u00e3o (alta = 0.7, baixa = 0.2)\r\npress_block.input.mu = 0.7\r\npress_block.input.lam = 0.2\r\n\r\n# Combinar evid\u00eancias para decis\u00e3o\r\ndecision_block.input.mu = (temp_block.complete.muER + press_block.complete.muER) / 2\r\ndecision_block.input.lam = 1 - decision_block.input.mu\r\n\r\n# Avaliar situa\u00e7\u00e3o\r\nif decision_block.complete.decision_output == 1.0:\r\n    print(\"Sistema em condi\u00e7\u00e3o segura\")\r\nelif decision_block.complete.decision_output == 0.0:\r\n    print(\"Alerta: condi\u00e7\u00e3o cr\u00edtica detectada\")\r\nelse:\r\n    print(\"Situa\u00e7\u00e3o indefinida - requer an\u00e1lise manual\")\r\n```\r\n\r\n### 6.2 An\u00e1lise de Contradi\u00e7\u00f5es\r\n\r\n```python\r\nfrom paraconsistent.blocks import ParaconsistentBlock\r\n\r\n# Cen\u00e1rio: M\u00faltiplas fontes contradit\u00f3rias\r\nbloco = ParaconsistentBlock()\r\nbloco.config.FtC = 0.6\r\n\r\n# Entrada contradit\u00f3ria (alta evid\u00eancia favor\u00e1vel E desfavor\u00e1vel)\r\nbloco.input.mu = 0.9\r\nbloco.input.lam = 0.8\r\n\r\n# Analisar contradi\u00e7\u00e3o\r\nprint(f\"Grau de Contradi\u00e7\u00e3o: {bloco.complete.gct:.2f}\")\r\nprint(f\"Regi\u00e3o L\u00f3gica: {bloco.complete.label}\")\r\n\r\nif \"\u252c\" in bloco.complete.label:\r\n    print(\"\u26a0\ufe0f Inconsist\u00eancia detectada - revisar fontes de informa\u00e7\u00e3o\")\r\n```\r\n\r\n## 7. Arquitetura\r\n\r\n### 7.1 Estrutura de M\u00f3dulos\r\n\r\n```\r\nparaconsistent/\r\n\u251c\u2500\u2500 blocks/\r\n\u2502   \u2514\u2500\u2500 block.py           # Classe ParaconsistentBlock\r\n\u251c\u2500\u2500 core/\r\n\u2502   \u251c\u2500\u2500 config.py          # Configura\u00e7\u00f5es e valida\u00e7\u00e3o\r\n\u2502   \u251c\u2500\u2500 engine.py          # Motor de c\u00e1lculo\r\n\u2502   \u251c\u2500\u2500 metrics.py         # M\u00e9tricas geom\u00e9tricas\r\n\u2502   \u251c\u2500\u2500 labels.py          # Classifica\u00e7\u00e3o de regi\u00f5es\r\n\u2502   \u2514\u2500\u2500 types.py           # Type definitions\r\n\u2514\u2500\u2500 __init__.py\r\n```\r\n\r\n### 7.2 Fluxo de C\u00e1lculo\r\n\r\n1. **Entrada**: Valida\u00e7\u00e3o e clamping de \u03bc e \u03bb\r\n2. **Graus Principais**: C\u00e1lculo de GC e GCT\r\n3. **Geometria**: C\u00e1lculo de d, D e GCR\r\n4. **Evid\u00eancias**: C\u00e1lculo de \u03bcE, \u03bcECT, \u03bcER e \u03c6\r\n5. **Decis\u00e3o**: Compara\u00e7\u00e3o de \u03bcER com FtC\r\n6. **Classifica\u00e7\u00e3o**: Identifica\u00e7\u00e3o da regi\u00e3o l\u00f3gica\r\n\r\n### 7.3 Cache e Performance\r\n\r\nO sistema implementa cache inteligente que invalida automaticamente ao alterar entradas ou par\u00e2metros, garantindo consist\u00eancia sem sacrificar performance.\r\n\r\n## 8. Valida\u00e7\u00e3o e Testes\r\n\r\nA biblioteca foi validada contra casos de teste padr\u00e3o da literatura, com taxa de acerto superior a 97% em 37 casos de teste independentes.\r\n\r\n## 9. Refer\u00eancias Bibliogr\u00e1ficas\r\n\r\n- Da Silva Filho, J. I., Lambert-Torres, G., & Abe, J. M. (2010). *Uncertainty Treatment Using Paraconsistent Logic: Introducing Paraconsistent Artificial Neural Networks*. IOS Press.\r\n\r\n- Abe, J. M. (1992). *Fundamentos da L\u00f3gica Anotada* (Foundations of Annotated Logics). PhD Thesis, University of S\u00e3o Paulo.\r\n\r\n- Da Costa, N. C. A., Abe, J. M., & Subrahmanian, V. S. (1991). Remarks on annotated logic. *Zeitschrift f\u00fcr mathematische Logik und Grundlagen der Mathematik*, 37(9\u201012), 561-570.\r\n\r\n## 10. Licen\u00e7a\r\n\r\nMIT License\r\n\r\nCopyright (c) 2025\r\n\r\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\r\n\r\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n## 11. Contribuindo\r\n\r\nContribui\u00e7\u00f5es s\u00e3o bem-vindas! Por favor, abra uma issue ou pull request no reposit\u00f3rio GitHub.\r\n\r\n## 12. Suporte\r\n\r\n- **Reposit\u00f3rio**: https://github.com/dirgogoo/Paraconsistent-Lib\r\n- **PyPI**: https://pypi.org/project/paraconsistent/\r\n- **Issues**: https://github.com/dirgogoo/Paraconsistent-Lib/issues\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Blocos de l\u00f3gica paraconsistente com API simples.",
    "version": "0.2.1",
    "project_urls": null,
    "split_keywords": [
        "logic",
        " paraconsistent",
        " lpa2v",
        " reasoning",
        " fuzzy"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "5eb98d898f8786b0b82be1465493f906d8262d14c34437c17eadf8ad2fcd2196",
                "md5": "fdc87479f325265f2441fedc4c14e9e4",
                "sha256": "7e5e413b073e39897af681d4880b09f8a58d52aaac89b18f24241fec2ebe9b1e"
            },
            "downloads": -1,
            "filename": "paraconsistent-0.2.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "fdc87479f325265f2441fedc4c14e9e4",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 13947,
            "upload_time": "2025-10-28T14:27:43",
            "upload_time_iso_8601": "2025-10-28T14:27:43.559566Z",
            "url": "https://files.pythonhosted.org/packages/5e/b9/8d898f8786b0b82be1465493f906d8262d14c34437c17eadf8ad2fcd2196/paraconsistent-0.2.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "af3547ec1594dfdf83a2bf6dcc4b5deca1f71e5a24fe101321d9f987c165c3b0",
                "md5": "2a84e993fa3fc89a59f79fd6065174f5",
                "sha256": "ba7c120f7a61527ec99894f9a93af95cb6b74f05090bd8de2e57219370f15b76"
            },
            "downloads": -1,
            "filename": "paraconsistent-0.2.1.tar.gz",
            "has_sig": false,
            "md5_digest": "2a84e993fa3fc89a59f79fd6065174f5",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 16195,
            "upload_time": "2025-10-28T14:27:45",
            "upload_time_iso_8601": "2025-10-28T14:27:45.352833Z",
            "url": "https://files.pythonhosted.org/packages/af/35/47ec1594dfdf83a2bf6dcc4b5deca1f71e5a24fe101321d9f987c165c3b0/paraconsistent-0.2.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-28 14:27:45",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "paraconsistent"
}
        
Elapsed time: 9.36741s